You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/05/18 05:36:08 UTC
[01/26] openmeetings git commit: .gitattributes is added to normalize
line endings
Repository: openmeetings
Updated Branches:
refs/heads/3.3.x 68d078cd0 -> 1cb3518f0
.gitattributes is added to normalize line endings
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/11e8d9dc
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/11e8d9dc
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/11e8d9dc
Branch: refs/heads/3.3.x
Commit: 11e8d9dc5d2441b6394543d9f0e7b2109499c5e7
Parents: 68d078c
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Thu May 18 12:34:12 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Thu May 18 12:34:12 2017 +0700
----------------------------------------------------------------------
.gitattributes | 8 ++++++++
1 file changed, 8 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/11e8d9dc/.gitattributes
----------------------------------------------------------------------
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..f797f9a
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,8 @@
+# Set the default behavior, in case people don't have core.autocrlf set.
+* text=auto
+
+*.java text
+*.xml text
+
+*.png binary
+*.jpg binary
[14/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/JiraPlugin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/JiraPlugin.xml b/openmeetings-server/src/site/xdoc/JiraPlugin.xml
index 8224fc0..9a81d4d 100644
--- a/openmeetings-server/src/site/xdoc/JiraPlugin.xml
+++ b/openmeetings-server/src/site/xdoc/JiraPlugin.xml
@@ -1,51 +1,51 @@
-<?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="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Jira Plugin</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Jira Plugin for OpenMeetings">
- <p>Sources are available at <a href="https://svn.apache.org/repos/asf/openmeetings/plugin/trunk/jira">https://svn.apache.org/repos/asf/openmeetings/plugin/trunk/jira</a></p>
- <p>
- To get SNAPSHOTS for testing please contact <a href="mail-lists.html">Mailing lists</a>
- </p>
- </section>
-
- <section name="Features">
- <p>The plugin contains the following features: </p>
- <ul>
- <li>Create videoconference rooms through Jira: </li>
- <li>
- <ol>
- <li>Integrated with Jira issues </li>
- <li>Configurable room type </li>
- </ol>
- </li>
- </ul>
- </section>
-
- <section name="Demo video">
- <p>The demo video of Jira plugin show you the plugin in action </p>
- <iframe width="640" height="390" src="http://www.youtube.com/embed/xBdYj-OZvlc" frameborder="0" allowfullscreen=""></iframe>
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Jira Plugin</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Jira Plugin for OpenMeetings">
+ <p>Sources are available at <a href="https://svn.apache.org/repos/asf/openmeetings/plugin/trunk/jira">https://svn.apache.org/repos/asf/openmeetings/plugin/trunk/jira</a></p>
+ <p>
+ To get SNAPSHOTS for testing please contact <a href="mail-lists.html">Mailing lists</a>
+ </p>
+ </section>
+
+ <section name="Features">
+ <p>The plugin contains the following features: </p>
+ <ul>
+ <li>Create videoconference rooms through Jira: </li>
+ <li>
+ <ol>
+ <li>Integrated with Jira issues </li>
+ <li>Configurable room type </li>
+ </ol>
+ </li>
+ </ul>
+ </section>
+
+ <section name="Demo video">
+ <p>The demo video of Jira plugin show you the plugin in action </p>
+ <iframe width="640" height="390" src="http://www.youtube.com/embed/xBdYj-OZvlc" frameborder="0" allowfullscreen=""></iframe>
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/JoomlaPlugin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/JoomlaPlugin.xml b/openmeetings-server/src/site/xdoc/JoomlaPlugin.xml
index a09f1cd..1baf855 100644
--- a/openmeetings-server/src/site/xdoc/JoomlaPlugin.xml
+++ b/openmeetings-server/src/site/xdoc/JoomlaPlugin.xml
@@ -1,60 +1,60 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Joomla Plugin</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="OpenMeetings Plugin for Joomla">
- <p>
- Plugin for Joomla currently is not open source.
- Please contact <a href="commercial-support.html" target="_blank" rel="nofollow">Commercial Support</a> to get it.
- </p>
- </section>
- <section name="Features">
- <p>The plugin contains the following features: </p>
- <ul>
- <li>Create videoconference rooms from Joomla: </li>
- <li>
- <ol>
- <li>Create rooms</li>
- <li>Enter the room</li>
- </ol>
- </li>
- <li>Access recordings from Joomla: </li>
- <li>
- <ol>
- <li>Download recordings</li>
- </ol>
- </li>
- </ul>
- </section>
- <section name="Demo video">
- <div>
- <b>OpenMeetings Joomla Plugin Installation</b><br/>
- <iframe width="640" height="360" src="https://www.youtube.com/embed/jt8ejgtHavc?feature=player_embedded" frameborder="0" allowfullscreen=""></iframe>
- </div>
- <br/>
- <div>
- <b>OpenMeetings Integration with Joomla</b><br/>
- <iframe width="640" height="360" src="https://www.youtube.com/embed/H61N0pfLusA?feature=player_embedded" frameborder="0" allowfullscreen=""></iframe>
- </div>
- </section>
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Joomla Plugin</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="OpenMeetings Plugin for Joomla">
+ <p>
+ Plugin for Joomla currently is not open source.
+ Please contact <a href="commercial-support.html" target="_blank" rel="nofollow">Commercial Support</a> to get it.
+ </p>
+ </section>
+ <section name="Features">
+ <p>The plugin contains the following features: </p>
+ <ul>
+ <li>Create videoconference rooms from Joomla: </li>
+ <li>
+ <ol>
+ <li>Create rooms</li>
+ <li>Enter the room</li>
+ </ol>
+ </li>
+ <li>Access recordings from Joomla: </li>
+ <li>
+ <ol>
+ <li>Download recordings</li>
+ </ol>
+ </li>
+ </ul>
+ </section>
+ <section name="Demo video">
+ <div>
+ <b>OpenMeetings Joomla Plugin Installation</b><br/>
+ <iframe width="640" height="360" src="https://www.youtube.com/embed/jt8ejgtHavc?feature=player_embedded" frameborder="0" allowfullscreen=""></iframe>
+ </div>
+ <br/>
+ <div>
+ <b>OpenMeetings Integration with Joomla</b><br/>
+ <iframe width="640" height="360" src="https://www.youtube.com/embed/H61N0pfLusA?feature=player_embedded" frameborder="0" allowfullscreen=""></iframe>
+ </div>
+ </section>
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/LanguageEditor.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/LanguageEditor.xml b/openmeetings-server/src/site/xdoc/LanguageEditor.xml
index 9c387e6..e2176d8 100644
--- a/openmeetings-server/src/site/xdoc/LanguageEditor.xml
+++ b/openmeetings-server/src/site/xdoc/LanguageEditor.xml
@@ -1,59 +1,59 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Language Editor</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Language Editor">
-
- <p>Features:</p>
- <ul>
- <li>edit the labels of any language, changes will take effect as
- soon as you re-login
- </li>
- <li>add new languages (for example to fit your co-operative design
- and language of your company)
- </li>
- <li>export the language-files to an XML File (these language Files
- can be used for your next installation or as contribution to the
- project)
- </li>
- <li>
- import of language files (
- <i>you should restart the server if you face problems, as the
- database cache might be invalid
- </i>
- )
- </li>
- </ul>
- <p>Screen from the Administration Panel: </p>
- <p>
- <a class="fancybox-buttons" href="images/langeditor_screen_v2.png">
- <img src="images/langeditor_screen_v2.png" alt="" width="475"
- height="324" />
- </a>
- </p>
-
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Language Editor</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Language Editor">
+
+ <p>Features:</p>
+ <ul>
+ <li>edit the labels of any language, changes will take effect as
+ soon as you re-login
+ </li>
+ <li>add new languages (for example to fit your co-operative design
+ and language of your company)
+ </li>
+ <li>export the language-files to an XML File (these language Files
+ can be used for your next installation or as contribution to the
+ project)
+ </li>
+ <li>
+ import of language files (
+ <i>you should restart the server if you face problems, as the
+ database cache might be invalid
+ </i>
+ )
+ </li>
+ </ul>
+ <p>Screen from the Administration Panel: </p>
+ <p>
+ <a class="fancybox-buttons" href="images/langeditor_screen_v2.png">
+ <img src="images/langeditor_screen_v2.png" alt="" width="475"
+ height="324" />
+ </a>
+ </p>
+
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/LdapAndADS.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/LdapAndADS.xml b/openmeetings-server/src/site/xdoc/LdapAndADS.xml
index 02b0a0d..c43e3ee 100644
--- a/openmeetings-server/src/site/xdoc/LdapAndADS.xml
+++ b/openmeetings-server/src/site/xdoc/LdapAndADS.xml
@@ -1,96 +1,96 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>LDAP/ADS configuration</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Ubuntu Installation">
- <div>
- Run the commands
- <source>
-<![CDATA[
-sudo apt-get install slapd ldap-utils
-]]>
- </source>
- </div>
- <div>
- Modify file <tt>/etc/ldap/ldap.conf</tt> add highlighted attributes:
- <source>
-<![CDATA[
-#
-# LDAP Defaults
-#
-# See ldap.conf(5) for details
-# This file should be world readable but not world writable.
-BASE dc=unixmen,dc=com
-URI ldap://192.168.1.200
-#SIZELIMIT 12
-#TIMELIMIT 15
-#DEREF never
-# TLS certificates (needed for GnuTLS)
-TLS_CACERT /etc/ssl/certs/ca-certificates.crt
-]]>
- </source>
- </div>
- <div>
- Run the Configuration assistant: <tt>sudo dpkg-reconfigure slapd</tt>
- </div>
- <div>
- Test LDAP server: <tt>ldapsearch -x</tt>
- </div>
- <div>
- Add/Edit/Delete users: <tt>sudo apt-get install phpldapadmin</tt>
- </div>
- <div>
- Detailed reference: <a href="http://www.unixmen.com/openldap-installation-and-configuration-in-ubuntu-12-10-server-debian-6/">http://www.unixmen.com/openldap-installation-and-configuration-in-ubuntu-12-10-server-debian-6/</a>
- </div>
- </section>
- <section name="LDAP and Active Directory Integration">
- <p> In: $RED5_HOME/webapps/openmeetings/conf<br/>
- you will find sample configurations for LDAP and Active Directory. The
- nature of those Directory Servers are that they are individual for
- every organization, so you have to modify of course at least the
- path to your user-base et cetera.<br/>
- <br/>
- To activate any of those configurations you have to login into
- OpenMeetings, goto Administration > Ldap.
- </p>
- <a class="fancybox-buttons" href="images/ldap_screen.png">
- <img src="images/ldap_screen.png" alt="" width="442" height="282" />
- </a>
- <p>
- Import is that you configure LDAP_SEARCH_PATH so that it points to the node of your directory server that contains the users
- </p>
- <p>
- If you have multiple search paths you can either try to define a search path that points to multiple nodes or define multiple ldap configurations.
- </p>
- <p>
- Successful integration is also reported with Novell eDirectory
- </p>
- <p>
- You can configure multiple domains or different user-paths in the Administration of OpenMeetings.
- </p>
- <p>
- <b>NOTE: </b>You should specify file name <i>RELATIVE</i> to <tt>$RED5_HOME/webapps/openmeetings/conf</tt>
- </p>
- </section>
-
- </body>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>LDAP/ADS configuration</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Ubuntu Installation">
+ <div>
+ Run the commands
+ <source>
+<![CDATA[
+sudo apt-get install slapd ldap-utils
+]]>
+ </source>
+ </div>
+ <div>
+ Modify file <tt>/etc/ldap/ldap.conf</tt> add highlighted attributes:
+ <source>
+<![CDATA[
+#
+# LDAP Defaults
+#
+# See ldap.conf(5) for details
+# This file should be world readable but not world writable.
+BASE dc=unixmen,dc=com
+URI ldap://192.168.1.200
+#SIZELIMIT 12
+#TIMELIMIT 15
+#DEREF never
+# TLS certificates (needed for GnuTLS)
+TLS_CACERT /etc/ssl/certs/ca-certificates.crt
+]]>
+ </source>
+ </div>
+ <div>
+ Run the Configuration assistant: <tt>sudo dpkg-reconfigure slapd</tt>
+ </div>
+ <div>
+ Test LDAP server: <tt>ldapsearch -x</tt>
+ </div>
+ <div>
+ Add/Edit/Delete users: <tt>sudo apt-get install phpldapadmin</tt>
+ </div>
+ <div>
+ Detailed reference: <a href="http://www.unixmen.com/openldap-installation-and-configuration-in-ubuntu-12-10-server-debian-6/">http://www.unixmen.com/openldap-installation-and-configuration-in-ubuntu-12-10-server-debian-6/</a>
+ </div>
+ </section>
+ <section name="LDAP and Active Directory Integration">
+ <p> In: $RED5_HOME/webapps/openmeetings/conf<br/>
+ you will find sample configurations for LDAP and Active Directory. The
+ nature of those Directory Servers are that they are individual for
+ every organization, so you have to modify of course at least the
+ path to your user-base et cetera.<br/>
+ <br/>
+ To activate any of those configurations you have to login into
+ OpenMeetings, goto Administration > Ldap.
+ </p>
+ <a class="fancybox-buttons" href="images/ldap_screen.png">
+ <img src="images/ldap_screen.png" alt="" width="442" height="282" />
+ </a>
+ <p>
+ Import is that you configure LDAP_SEARCH_PATH so that it points to the node of your directory server that contains the users
+ </p>
+ <p>
+ If you have multiple search paths you can either try to define a search path that points to multiple nodes or define multiple ldap configurations.
+ </p>
+ <p>
+ Successful integration is also reported with Novell eDirectory
+ </p>
+ <p>
+ You can configure multiple domains or different user-paths in the Administration of OpenMeetings.
+ </p>
+ <p>
+ <b>NOTE: </b>You should specify file name <i>RELATIVE</i> to <tt>$RED5_HOME/webapps/openmeetings/conf</tt>
+ </p>
+ </section>
+
+ </body>
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/MSSQLConfig.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/MSSQLConfig.xml b/openmeetings-server/src/site/xdoc/MSSQLConfig.xml
index 7d6e6a6..26e2a78 100644
--- a/openmeetings-server/src/site/xdoc/MSSQLConfig.xml
+++ b/openmeetings-server/src/site/xdoc/MSSQLConfig.xml
@@ -1,76 +1,76 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>MSSQL Configuration</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="MSSQL Configuration">
-
- <subsection name="Before you start">
- <ul>
- <li>You need Openmeetings 2.2 or later to use MSSQL integration</li>
- <li>Make sure that you have set utf8 as collation for the openmeetings database
- before you start the installation process of OpenMeetings!
- </li>
- <li>
- make sure MSSQL is listening on TCP/IP connections! and username/password
- authentication is enabled for it
- <br />
- To verify if MSSQL connection is working: OpenMeetings will
- automatically create all tables in the database and all tables
- should have utf8 as encoding/collation!
- </li>
- <li>If you encounter issues, you can drop the db and then run
- the web based installer again
- </li>
- </ul>
- </subsection>
-
- <subsection name="Steps todo">
- <ul>
- <li>
- You need to download the JDBC driver from Microsoft
- <a href="http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774" target="_blank"
- rel="nofollow">http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774</a>
- Unarchive appropriate file from it (sqljdbc.jar or sqljdbc4.jar) and place it into:
- <tt>$red5/webapps/openmeetings/WEB-INF/lib/</tt>
- </li>
- <li>
- Run red5-service and goto the web-based installer:
- http://localhost:5080/openmeetings/install
- </li>
- </ul>
- </subsection>
-
- <subsection name="MSSQL Sample Configuration">
- <p>
- There is a sample configuration for MySQL that ships with
- every release in:
- <br />
- /webapps/openmeetings/WEB-INF/classes/META-INF/mssql_persistence.xml
- </p>
- </subsection>
-
-
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>MSSQL Configuration</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="MSSQL Configuration">
+
+ <subsection name="Before you start">
+ <ul>
+ <li>You need Openmeetings 2.2 or later to use MSSQL integration</li>
+ <li>Make sure that you have set utf8 as collation for the openmeetings database
+ before you start the installation process of OpenMeetings!
+ </li>
+ <li>
+ make sure MSSQL is listening on TCP/IP connections! and username/password
+ authentication is enabled for it
+ <br />
+ To verify if MSSQL connection is working: OpenMeetings will
+ automatically create all tables in the database and all tables
+ should have utf8 as encoding/collation!
+ </li>
+ <li>If you encounter issues, you can drop the db and then run
+ the web based installer again
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="Steps todo">
+ <ul>
+ <li>
+ You need to download the JDBC driver from Microsoft
+ <a href="http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774" target="_blank"
+ rel="nofollow">http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774</a>
+ Unarchive appropriate file from it (sqljdbc.jar or sqljdbc4.jar) and place it into:
+ <tt>$red5/webapps/openmeetings/WEB-INF/lib/</tt>
+ </li>
+ <li>
+ Run red5-service and goto the web-based installer:
+ http://localhost:5080/openmeetings/install
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="MSSQL Sample Configuration">
+ <p>
+ There is a sample configuration for MySQL that ships with
+ every release in:
+ <br />
+ /webapps/openmeetings/WEB-INF/classes/META-INF/mssql_persistence.xml
+ </p>
+ </subsection>
+
+
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/ManualTesting.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/ManualTesting.xml b/openmeetings-server/src/site/xdoc/ManualTesting.xml
index c319aac..326c47c 100644
--- a/openmeetings-server/src/site/xdoc/ManualTesting.xml
+++ b/openmeetings-server/src/site/xdoc/ManualTesting.xml
@@ -1,502 +1,502 @@
-<?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="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Manual Testing</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Introduction">
-
- <p>
- Below is a test plan for the OpenMeetings 2.1 pre-release testing.
- </p>
- </section>
-
- <section name="Details">
-
- <ol>
- <li>
- <b>User GUI tests</b>
- <ol>
- <li>
- Login/logout
- <ol>
- <li>Password recovering </li>
- <li>Self-registering </li>
- <li>"Visit Apache OpenMeetings" link </li>
- <li>Enter wrong login/password </li>
- <li>Enter correct login/password </li>
- <li>Exit the system by click the Exit button </li>
- </ol>
- </li>
- <li>
- Dashboard
- <ol>
- <li>Correct user info in the upper left corner </li>
- <li>Links in the "Help and support" section </li>
- <li>It should be possible to enter user’s room from the dashboard </li>
- <li>Room details should be shown correctly in the "Rooms in this section…" part of the screen </li>
- </ol>
- </li>
- <li>
- Global chat
- <ol>
- <li>Send/receive message where at least 3 users in the system </li>
- <li>Adding a contact to the contact list </li>
- <li>Private message </li>
- <li>Showing user profile </li>
- <li>Inviting user to the conference room </li>
- <li>Copy chat log </li>
- <li>Delete chat log </li>
- <li>Changing font style in the massage </li>
- <li>Adding emotions to the message </li>
- </ol>
- Attention! Correct RTL support does not work in the current implementation
- </li>
- <li>
- Calendar view
- <ol>
- <li>Change view (weekly/daily/monthly) and moving between the dates </li>
- <li>Adding/removing/moving by mouse an event </li>
- </ol>
- </li>
- <li>
- Calendar invitation window
- <ol>
- <li>Creating/updating/deleting an event </li>
- <li>Inviting 3 internal and 3 external guests </li>
- <li>Different reminder types: receiving e-mail invitation for internal and external guests </li>
- <li>Password protected invitation </li>
- <li>Inviting to the rooms of the different types </li>
- <li>Choosing time zone for external guest </li>
- <li>Correct user data in the invitations </li>
- <li>SMS reminder for internal and external guests </li>
- <li>E-mail reminder for internal and external guests </li>
- <li>It should be possible to enter to the event via invitation link room at the particular time slot only </li>
- <li>Enter the room via invitation window </li>
- </ol>
- </li>
- <li>
- My Profile: User profile should contain correct user info and allow to edit this
- </li>
- <li>
- Contacts and Messages
- <ol>
- <li>Add/remove a message </li>
- <li>Creating a new folder </li>
- <li>Moving between the folders </li>
- <li>Marking messages as read/unread </li>
- <li>Message filters </li>
- <li>Contact list </li>
- </ol>
- </li>
- <li>
- User settings
- <ol>
- <li>Possibility to change the user info </li>
- <li>Changing time zone and language (should start to work after user re-login </li>
- <li>Community settings or different users </li>
- <li>Display settings</li>
- </ol>
- </li>
- <li>
- Search users
- <ol>
- <li>Send a private message </li>
- <li>Adding a contact </li>
- <li>View contact details via user list </li>
- </ol>
- </li>
- <li>
- Room lists
- <ol>
- <li>Public rooms, private rooms and my rooms should contain correct room lists </li>
- <li>User list for the selected room </li>
- <li>Room details for the selected room </li>
- </ol>
- </li>
- <li>
- Recordings
- <ol>
- <li>The list should contain available recordings in public and private folders </li>
- <li>Info panel should contain actual info about the recording </li>
- <li>Downloading a recording is different formats (AVI/FLV) </li>
- <li>Play the recording in OpenMeetings </li>
- <li>Play downloaded recording by Windows player </li>
- <li>Remove a recording from the folder </li>
- </ol>
- </li>
- <li>
- Restricted room testing – general issues (should be tested with at least 3 attendees)
- <ol>
- <li>Enter the room: different cases for the cam/micro, choosing of the cam resolution, test recording, allow/deny of video </li>
- <li>User list should be shown correctly </li>
- <li>Correct user credentials after the room entering </li>
- <li>Add moderator permissions to the user </li>
- <li>Turn micro on/off in the user list </li>
- <li>Increasing/decreasing sound level and turning micro on/off in the video window </li>
- <li>Turn micro on/off in the user list to another user – possible by the moderator only </li>
- <li>Increasing/decreasing sound level and turning micro on/off in the video window - possible by the moderator only </li>
- <li>Allow/deny drawing on whiteboard – possible by the moderator only </li>
- <li>Allow/deny screen sharing – possible by the moderator only </li>
- <li>Allow/deny remote screen control – possible by the moderator only </li>
- <li>Allow/deny exclusive audio – possible by the moderator only </li>
- <li>Re-start devise settings via user list </li>
- <li>Re-start devise settings via video window </li>
- <li>Kick the user off by the moderator </li>
- <li>Click F8 key to arrange videos </li>
- <li>Activity and actions panel should contain correct info </li>
- <li>Exit the room </li>
- </ol>
- </li>
- <li>
- Restricted room testing: file uploading + documents
- <ol>
- <li>Upload a document with "Load directly to whiteboard" switch turned on </li>
- <li>Upload a with "Load directly to whiteboard" switch turned on off </li>
- <li>Upload a document with the localized file name and spaces in the name </li>
- <li>Uploading a document into different folders: private files should be visible only their owner only </li>
- <li>Removing a file from the room </li>
- <li>Home and public drive size should change correctly </li>
- <li>Adding a new folder </li>
- <li>Removing a folder </li>
- <li>Load a document of each supported type and check that it’s shown correctly </li>
- </ol>
- </li>
- <li>
- Restricted room testing – whiteboard and properties panels (should be tested with at least 3 attendees)
- <ol>
- <li>Adding a removing a whiteboard </li>
- <li>Full-fit switch </li>
- <li>Clear whiteboard </li>
- <li>Clear objects of current slide only </li>
- <li>Save and export </li>
- <li>Undo </li>
- <li>Select an object </li>
- <li>Pointer </li>
- <li>Text </li>
- <li>Paint </li>
- <li>Draw line </li>
- <li>Draw underline </li>
- <li>Rectangle </li>
- <li>Ellipse </li>
- <li>Arrow </li>
- <li>Cliparts</li>
- </ol>
- </li>
- <li>
- Restricted room testing – chat (should be tested with at least 3 attendees)
- <ol>
- <li>Send a message </li>
- <li>Start a private chat </li>
- <li>Chat moderation </li>
- <li>Font style </li>
- <li>Emotions </li>
- <li>Show/copy chat log </li>
- <li>Delete server chat log </li>
- </ol>
- </li>
- <li>
- Restricted room testing – screen sharing and recordings (should be tested with at least 3 attendees)
- <ol>
- <li>"Share record/screen" button in the room </li>
- <li>Desktop sharer: start/stop sharing </li>
- <li>Change the shared screen area (X-offset, Y-offset, width, height) </li>
- <li>Change the screen sharing quality </li>
- <li>Start/stop recordings – need to check that it works as expected </li>
- </ol>
- </li>
- <li>
- Restricted room testing – Actions menu
- <ol>
- <li>Send invitation: send English and localized message </li>
- <li>Send invitation with password </li>
- <li>Send invitations with 3 different time periods </li>
- <li>Change time zone of the invitation </li>
- <li>Change language of the invitation </li>
- <li>Send invitation screen: "Generate URL" button – check the same things as for the invitations sent by email </li>
- <li>Apply to be moderator </li>
- <li>Apply to whiteboard access </li>
- <li>Apply to audio/video access </li>
- <li>Create a poll </li>
- <li>Poll results </li>
- <li>Vote </li>
- <li>Default whiteboard settings: check all of them </li>
- </ol>
- </li>
- <li>
- Conference room testing
- <ol>
- <li>User list should look in another way in compare with restricted type </li>
- <li>Generally, all should look OK when enter the room </li>
- </ol>
- </li>
- <li>
- Interview room testing (should be tested with at least 3 attendees)
- <ol>
- <li>User list should look as expected </li>
- <li>Change a user for video pod </li>
- <li>Start/stop recordings </li>
- </ol>
- </li>
- </ol>
- </li>
- <li>
- <b>Admin GUI tests</b>
- <ol>
- <li>
- Users
- <ol>
- <li>Add/edit/remove/search user in the table </li>
- <li>Move between screens where there are many users in the table </li>
- <li>Edit text fields </li>
- <li>Change a time zone, re-login and check the calendar </li>
- <li>Change a language, re-login and check the GUI language </li>
- <li>Е-mail: e-mails should pass </li>
- <li>Phone and SMS switch: if set and turned on, sms messages should pass </li>
- <li>Change a status – non-active user cannot login </li>
- <li>Change user role and re-login </li>
- <li>Change user group - user has an access only to the rooms belong to his group </li>
- <li>Change community settings and check </li>
- </ol>
- </li>
- <li>
- Connections
- <ol>
- <li>Should be tested with at least 3 users in the system </li>
- <li>Sessionvars table should be shown correctly </li>
- <li>Kick the user from the system </li>
- </ol>
- </li>
- <li>
- Groups
- <ol>
- <li>Add/remove/edit/search an group </li>
- <li>Add/remove a user from the user list of selected group </li>
- </ol>
- </li>
- <li>
- Conference rooms
- <ol>
- <li>Add/remove/edit/search a room </li>
- <li>User list for the given room should contain actual list </li>
- <li>Turn the Moderation switch on/off and enter the room </li>
- <li>Add/remove a user to the default moderator list </li>
- <li>Check max participants number in the room </li>
- <li>Change room type and enter the room </li>
- <li>Turn public switch on/off </li>
- <li>Turn "Demo switch" on/off, change the demonstration time </li>
- <li>Turn "Allow user questions" on/off and enter the room </li>
- <li>Turn "Audio only" switch on/off and enter the room </li>
- <li>Set "Close URL" to some URL, enter the room and then exit – you should be re-directed correspondingly </li>
- <li>Check that SIP settings work as expected </li>
- <li>Check that "Allow recordings" switch works as expected </li>
- <li>Check that "Layout options" switch work as expected </li>
- <li>Check that "Allow font styles" switch works as expected </li>
- </ol>
- </li>
- <li>
- Configuration
- <ol>
- <li>Allow_frontend_register </li>
- <li>Mail server settings </li>
- <li>SMS provider settings </li>
- <li>Application.name </li>
- <li>Default_lang_id </li>
- <li>default time zone </li>
- <li>SIP settings </li>
- <li>Reminder minutes </li>
- </ol>
- </li>
- <li>
- Language editor
- <ol>
- <li>Add/remove/edit/search a key </li>
- <li>Import/export of localization files </li>
- </ol>
- </li>
- <li>
- LDAP: Add/remove/edit/search a record
- </li>
- <li>
- Backup
- <ol>
- <li>System import </li>
- <li>System backup </li>
- <li>TBD – need to add tests for command line admin here </li>
- </ol>
- </li>
- <li>
- Servers: Add/remove/edit/search a server
- </li>
- </ol>
- </li>
- <li>
- <b>SIP integration tests</b> (should be tested with at least 3 attendees in the room; for restricted and interview rooms)
- <ol>
- <li>Call from the room to the external phone number </li>
- <li>Call from external phone number to the room </li>
- <li>Call from the software phone to the room </li>
- <li>Call from the software phone with video to the room </li>
- </ol>
- </li>
- <li>
- <b>Network testing script</b>
- </li>
- <li>
- <b>Site integration tests</b>
- <ol>
- <li>Enter OpenMeetings room from Moodle site </li>
- <li>Check that recordings link are shown on the Moodle site </li>
- <li>Enter OpenMeetings room from Joomla site </li>
- <li>Check that recordings link are shown on the Joomla site </li>
- <li>Enter OpenMeetings room from Drupal site </li>
- <li>Check that recordings link are shown on the Drupal site </li>
- </ol>
- </li>
- <li>
- <b>Extended test plan for the recordings and screen sharing testing</b>
- <ol>
- <li><b>Interview room testing</b>
- <ol>
- <li>
- Just a 5 minutes recording:
- <ol>
- <li>Enter a room with user A</li>
- <li>Enter a room with user B</li>
- <li>Open videos for both users</li>
- <li>Start recording with user A</li>
- <li>Wait for 5 minutes</li>
- <li>Stop recording by user A</li>
- <li>Repeat steps 1.1 – 1.6 3 times</li>
- <li>Exit room</li>
- <li>Wait some time</li>
- <li>Check that all the recordings are processed and work as expected</li>
- <li>there should not be a delay between the video and sound</li>
- </ol>
- </li>
- <li>Just a 30 minutes recording: do steps 1.1.1-1.16 one time; then check the result recording</li>
- <li>Just an 1 hour recording: do steps 1.1.1-1.16 one time; then check the result recording</li>
- <li>
- 5-minutes recording: user exits the room before the recording gets stopped
- <ol>
- <li>Enter a room with user A</li>
- <li>Enter a room with user B</li>
- <li>Open videos for both users</li>
- <li>Start recording with user A</li>
- <li>Exit the room by user B</li>
- <li>Stop recording by user A</li>
- <li>Repeat steps 1.4.1 – 1.4.6 3 times</li>
- <li>Exit room</li>
- <li>Wait some time</li>
- <li>Check that all the recordings are processed and work as expected</li>
- <li>There should not be a delay between the video and sound</li>
- </ol>
- </li>
- <li>
- 5-minutes recording: user A starts recording, user B stops
- <ol>
- <li>Enter a room with user A</li>
- <li>Enter a room with user B</li>
- <li>Open videos for both users</li>
- <li>Start recording with user A</li>
- <li>Stop recording by user B</li>
- <li>Exit room</li>
- <li>Wait some time</li>
- <li>Check that all the recordings are processed as expected</li>
- </ol>
- </li>
- </ol>
- </li>
- <li>
- <b>Conference room testing</b>
- <ol>
- <li>
- Screen sharing
- <ol>
- <li>Enter a room with user A</li>
- <li>Enter a room with user B</li>
- <li>Enter a room by user C</li>
- <li>Open videos for all the users</li>
- <li>Start screen sharing session by user A, choose High quality</li>
- <li>Check that A's screen looks correctly for users B and C and sound is OK in the room</li>
- <li>Stop screen sharing by user A after 5 minutes</li>
- <li>Repeat steps 2.1.1-2.1.7 3 times</li>
- <li>Repeat steps 2.1.1-2.1.7 one more time, but choose "Very high quality" on the step 2.1.5</li>
- <li>Repeat steps 2.1.1-2.1.7 one more time, but choose "Medium quality" on the step 2.1.5</li>
- <li>Repeat steps 2.1.1-2.1.7 one more time, but choose "Low quality" on the step 2.1.5</li>
- <li>Repeat steps 2.1.1-2.1.7 one more time, but choose some random height and width on the step 2.1.5</li>
- <li>Repeat steps 2.1.1-2.1.7 one more time, but turn the "Notify on disconnect" switch on the step 2.1.5</li>
- </ol>
- </li>
- <li>
- Recordings
- <ol>
- <li>Enter a room with user A</li>
- <li>Enter a room with user B</li>
- <li>Enter a room by user C</li>
- <li>Open videos for all the users</li>
- <li>Start recording session by user A, choose High quality</li>
- <li>Stop recording session by user A after 5 minutes</li>
- <li>Repeat steps 2.2.1-2.2.6 3 times</li>
- <li>Repeat steps 2.2.1-2.2.6 one more time, but choose "Very high quality" on the step 2.2.5</li>
- <li>Repeat steps 2.2.1-2.2.6 one more time, but choose "Medium quality" on the step 2.2.5</li>
- <li>Repeat steps 2.2.1-2.2.6 one more time, but choose "Low quality" on the step 2.2.5</li>
- <li>Repeat steps 2.2.1-2.2.6 one more time, but choose some random height and width on the step 2.2.5</li>
- <li>Repeat steps 2.2.1-2.2.6 one more time, but turn the "Notify on disconnect" switch on the step 2.2.5</li>
- <li>Go to the A's recordings list and check that all the recordings are there, processed without errors and work as expected</li>
- </ol>
- </li>
- <li>
- Recordings + screen sharing: user enters the room after recording is started
- <ol>
- <li>Enter conference room by user A</li>
- <li>Start screen sharing and recordings with default parameters by user A</li>
- <li>Enter the room by user B, check that screen sharing is OK. Wait 5 minutes</li>
- <li>Enter the room by user C, check that screen sharing is OK. Wait 5 minutes</li>
- <li>Exit the room by user B; wait 3 minutes</li>
- <li>Exit the room by user C; wait 3 minutes</li>
- <li>Exit the room by user A</li>
- <li>Repeat steps 2.3.1-2.3.7 3 times</li>
- <li>Go to the recordings list for user A and check that all the recordings are OK and work as expected</li>
- </ol>
- </li>
- <li>
- Stress test
- <ol>
- <li>Enter the room by the users A, B, C, D and E</li>
- <li>Open A, B, C, D and E videos</li>
- <li>Start screen sharing and recordings session with high quality by user A</li>
- <li>Wait 30 minutes</li>
- <li>Stop screen sharing</li>
- <li>Go to A's recordings list and check that created recording is OK</li>
- <li>Repeat steps 2.3.1-2.3.6 3 times</li>
- </ol>
- </li>
- </ol>
- </li>
- </ol>
- </li>
-
- </ol>
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Manual Testing</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Introduction">
+
+ <p>
+ Below is a test plan for the OpenMeetings 2.1 pre-release testing.
+ </p>
+ </section>
+
+ <section name="Details">
+
+ <ol>
+ <li>
+ <b>User GUI tests</b>
+ <ol>
+ <li>
+ Login/logout
+ <ol>
+ <li>Password recovering </li>
+ <li>Self-registering </li>
+ <li>"Visit Apache OpenMeetings" link </li>
+ <li>Enter wrong login/password </li>
+ <li>Enter correct login/password </li>
+ <li>Exit the system by click the Exit button </li>
+ </ol>
+ </li>
+ <li>
+ Dashboard
+ <ol>
+ <li>Correct user info in the upper left corner </li>
+ <li>Links in the "Help and support" section </li>
+ <li>It should be possible to enter user’s room from the dashboard </li>
+ <li>Room details should be shown correctly in the "Rooms in this section…" part of the screen </li>
+ </ol>
+ </li>
+ <li>
+ Global chat
+ <ol>
+ <li>Send/receive message where at least 3 users in the system </li>
+ <li>Adding a contact to the contact list </li>
+ <li>Private message </li>
+ <li>Showing user profile </li>
+ <li>Inviting user to the conference room </li>
+ <li>Copy chat log </li>
+ <li>Delete chat log </li>
+ <li>Changing font style in the massage </li>
+ <li>Adding emotions to the message </li>
+ </ol>
+ Attention! Correct RTL support does not work in the current implementation
+ </li>
+ <li>
+ Calendar view
+ <ol>
+ <li>Change view (weekly/daily/monthly) and moving between the dates </li>
+ <li>Adding/removing/moving by mouse an event </li>
+ </ol>
+ </li>
+ <li>
+ Calendar invitation window
+ <ol>
+ <li>Creating/updating/deleting an event </li>
+ <li>Inviting 3 internal and 3 external guests </li>
+ <li>Different reminder types: receiving e-mail invitation for internal and external guests </li>
+ <li>Password protected invitation </li>
+ <li>Inviting to the rooms of the different types </li>
+ <li>Choosing time zone for external guest </li>
+ <li>Correct user data in the invitations </li>
+ <li>SMS reminder for internal and external guests </li>
+ <li>E-mail reminder for internal and external guests </li>
+ <li>It should be possible to enter to the event via invitation link room at the particular time slot only </li>
+ <li>Enter the room via invitation window </li>
+ </ol>
+ </li>
+ <li>
+ My Profile: User profile should contain correct user info and allow to edit this
+ </li>
+ <li>
+ Contacts and Messages
+ <ol>
+ <li>Add/remove a message </li>
+ <li>Creating a new folder </li>
+ <li>Moving between the folders </li>
+ <li>Marking messages as read/unread </li>
+ <li>Message filters </li>
+ <li>Contact list </li>
+ </ol>
+ </li>
+ <li>
+ User settings
+ <ol>
+ <li>Possibility to change the user info </li>
+ <li>Changing time zone and language (should start to work after user re-login </li>
+ <li>Community settings or different users </li>
+ <li>Display settings</li>
+ </ol>
+ </li>
+ <li>
+ Search users
+ <ol>
+ <li>Send a private message </li>
+ <li>Adding a contact </li>
+ <li>View contact details via user list </li>
+ </ol>
+ </li>
+ <li>
+ Room lists
+ <ol>
+ <li>Public rooms, private rooms and my rooms should contain correct room lists </li>
+ <li>User list for the selected room </li>
+ <li>Room details for the selected room </li>
+ </ol>
+ </li>
+ <li>
+ Recordings
+ <ol>
+ <li>The list should contain available recordings in public and private folders </li>
+ <li>Info panel should contain actual info about the recording </li>
+ <li>Downloading a recording is different formats (AVI/FLV) </li>
+ <li>Play the recording in OpenMeetings </li>
+ <li>Play downloaded recording by Windows player </li>
+ <li>Remove a recording from the folder </li>
+ </ol>
+ </li>
+ <li>
+ Restricted room testing – general issues (should be tested with at least 3 attendees)
+ <ol>
+ <li>Enter the room: different cases for the cam/micro, choosing of the cam resolution, test recording, allow/deny of video </li>
+ <li>User list should be shown correctly </li>
+ <li>Correct user credentials after the room entering </li>
+ <li>Add moderator permissions to the user </li>
+ <li>Turn micro on/off in the user list </li>
+ <li>Increasing/decreasing sound level and turning micro on/off in the video window </li>
+ <li>Turn micro on/off in the user list to another user – possible by the moderator only </li>
+ <li>Increasing/decreasing sound level and turning micro on/off in the video window - possible by the moderator only </li>
+ <li>Allow/deny drawing on whiteboard – possible by the moderator only </li>
+ <li>Allow/deny screen sharing – possible by the moderator only </li>
+ <li>Allow/deny remote screen control – possible by the moderator only </li>
+ <li>Allow/deny exclusive audio – possible by the moderator only </li>
+ <li>Re-start devise settings via user list </li>
+ <li>Re-start devise settings via video window </li>
+ <li>Kick the user off by the moderator </li>
+ <li>Click F8 key to arrange videos </li>
+ <li>Activity and actions panel should contain correct info </li>
+ <li>Exit the room </li>
+ </ol>
+ </li>
+ <li>
+ Restricted room testing: file uploading + documents
+ <ol>
+ <li>Upload a document with "Load directly to whiteboard" switch turned on </li>
+ <li>Upload a with "Load directly to whiteboard" switch turned on off </li>
+ <li>Upload a document with the localized file name and spaces in the name </li>
+ <li>Uploading a document into different folders: private files should be visible only their owner only </li>
+ <li>Removing a file from the room </li>
+ <li>Home and public drive size should change correctly </li>
+ <li>Adding a new folder </li>
+ <li>Removing a folder </li>
+ <li>Load a document of each supported type and check that it’s shown correctly </li>
+ </ol>
+ </li>
+ <li>
+ Restricted room testing – whiteboard and properties panels (should be tested with at least 3 attendees)
+ <ol>
+ <li>Adding a removing a whiteboard </li>
+ <li>Full-fit switch </li>
+ <li>Clear whiteboard </li>
+ <li>Clear objects of current slide only </li>
+ <li>Save and export </li>
+ <li>Undo </li>
+ <li>Select an object </li>
+ <li>Pointer </li>
+ <li>Text </li>
+ <li>Paint </li>
+ <li>Draw line </li>
+ <li>Draw underline </li>
+ <li>Rectangle </li>
+ <li>Ellipse </li>
+ <li>Arrow </li>
+ <li>Cliparts</li>
+ </ol>
+ </li>
+ <li>
+ Restricted room testing – chat (should be tested with at least 3 attendees)
+ <ol>
+ <li>Send a message </li>
+ <li>Start a private chat </li>
+ <li>Chat moderation </li>
+ <li>Font style </li>
+ <li>Emotions </li>
+ <li>Show/copy chat log </li>
+ <li>Delete server chat log </li>
+ </ol>
+ </li>
+ <li>
+ Restricted room testing – screen sharing and recordings (should be tested with at least 3 attendees)
+ <ol>
+ <li>"Share record/screen" button in the room </li>
+ <li>Desktop sharer: start/stop sharing </li>
+ <li>Change the shared screen area (X-offset, Y-offset, width, height) </li>
+ <li>Change the screen sharing quality </li>
+ <li>Start/stop recordings – need to check that it works as expected </li>
+ </ol>
+ </li>
+ <li>
+ Restricted room testing – Actions menu
+ <ol>
+ <li>Send invitation: send English and localized message </li>
+ <li>Send invitation with password </li>
+ <li>Send invitations with 3 different time periods </li>
+ <li>Change time zone of the invitation </li>
+ <li>Change language of the invitation </li>
+ <li>Send invitation screen: "Generate URL" button – check the same things as for the invitations sent by email </li>
+ <li>Apply to be moderator </li>
+ <li>Apply to whiteboard access </li>
+ <li>Apply to audio/video access </li>
+ <li>Create a poll </li>
+ <li>Poll results </li>
+ <li>Vote </li>
+ <li>Default whiteboard settings: check all of them </li>
+ </ol>
+ </li>
+ <li>
+ Conference room testing
+ <ol>
+ <li>User list should look in another way in compare with restricted type </li>
+ <li>Generally, all should look OK when enter the room </li>
+ </ol>
+ </li>
+ <li>
+ Interview room testing (should be tested with at least 3 attendees)
+ <ol>
+ <li>User list should look as expected </li>
+ <li>Change a user for video pod </li>
+ <li>Start/stop recordings </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <b>Admin GUI tests</b>
+ <ol>
+ <li>
+ Users
+ <ol>
+ <li>Add/edit/remove/search user in the table </li>
+ <li>Move between screens where there are many users in the table </li>
+ <li>Edit text fields </li>
+ <li>Change a time zone, re-login and check the calendar </li>
+ <li>Change a language, re-login and check the GUI language </li>
+ <li>Е-mail: e-mails should pass </li>
+ <li>Phone and SMS switch: if set and turned on, sms messages should pass </li>
+ <li>Change a status – non-active user cannot login </li>
+ <li>Change user role and re-login </li>
+ <li>Change user group - user has an access only to the rooms belong to his group </li>
+ <li>Change community settings and check </li>
+ </ol>
+ </li>
+ <li>
+ Connections
+ <ol>
+ <li>Should be tested with at least 3 users in the system </li>
+ <li>Sessionvars table should be shown correctly </li>
+ <li>Kick the user from the system </li>
+ </ol>
+ </li>
+ <li>
+ Groups
+ <ol>
+ <li>Add/remove/edit/search an group </li>
+ <li>Add/remove a user from the user list of selected group </li>
+ </ol>
+ </li>
+ <li>
+ Conference rooms
+ <ol>
+ <li>Add/remove/edit/search a room </li>
+ <li>User list for the given room should contain actual list </li>
+ <li>Turn the Moderation switch on/off and enter the room </li>
+ <li>Add/remove a user to the default moderator list </li>
+ <li>Check max participants number in the room </li>
+ <li>Change room type and enter the room </li>
+ <li>Turn public switch on/off </li>
+ <li>Turn "Demo switch" on/off, change the demonstration time </li>
+ <li>Turn "Allow user questions" on/off and enter the room </li>
+ <li>Turn "Audio only" switch on/off and enter the room </li>
+ <li>Set "Close URL" to some URL, enter the room and then exit – you should be re-directed correspondingly </li>
+ <li>Check that SIP settings work as expected </li>
+ <li>Check that "Allow recordings" switch works as expected </li>
+ <li>Check that "Layout options" switch work as expected </li>
+ <li>Check that "Allow font styles" switch works as expected </li>
+ </ol>
+ </li>
+ <li>
+ Configuration
+ <ol>
+ <li>Allow_frontend_register </li>
+ <li>Mail server settings </li>
+ <li>SMS provider settings </li>
+ <li>Application.name </li>
+ <li>Default_lang_id </li>
+ <li>default time zone </li>
+ <li>SIP settings </li>
+ <li>Reminder minutes </li>
+ </ol>
+ </li>
+ <li>
+ Language editor
+ <ol>
+ <li>Add/remove/edit/search a key </li>
+ <li>Import/export of localization files </li>
+ </ol>
+ </li>
+ <li>
+ LDAP: Add/remove/edit/search a record
+ </li>
+ <li>
+ Backup
+ <ol>
+ <li>System import </li>
+ <li>System backup </li>
+ <li>TBD – need to add tests for command line admin here </li>
+ </ol>
+ </li>
+ <li>
+ Servers: Add/remove/edit/search a server
+ </li>
+ </ol>
+ </li>
+ <li>
+ <b>SIP integration tests</b> (should be tested with at least 3 attendees in the room; for restricted and interview rooms)
+ <ol>
+ <li>Call from the room to the external phone number </li>
+ <li>Call from external phone number to the room </li>
+ <li>Call from the software phone to the room </li>
+ <li>Call from the software phone with video to the room </li>
+ </ol>
+ </li>
+ <li>
+ <b>Network testing script</b>
+ </li>
+ <li>
+ <b>Site integration tests</b>
+ <ol>
+ <li>Enter OpenMeetings room from Moodle site </li>
+ <li>Check that recordings link are shown on the Moodle site </li>
+ <li>Enter OpenMeetings room from Joomla site </li>
+ <li>Check that recordings link are shown on the Joomla site </li>
+ <li>Enter OpenMeetings room from Drupal site </li>
+ <li>Check that recordings link are shown on the Drupal site </li>
+ </ol>
+ </li>
+ <li>
+ <b>Extended test plan for the recordings and screen sharing testing</b>
+ <ol>
+ <li><b>Interview room testing</b>
+ <ol>
+ <li>
+ Just a 5 minutes recording:
+ <ol>
+ <li>Enter a room with user A</li>
+ <li>Enter a room with user B</li>
+ <li>Open videos for both users</li>
+ <li>Start recording with user A</li>
+ <li>Wait for 5 minutes</li>
+ <li>Stop recording by user A</li>
+ <li>Repeat steps 1.1 – 1.6 3 times</li>
+ <li>Exit room</li>
+ <li>Wait some time</li>
+ <li>Check that all the recordings are processed and work as expected</li>
+ <li>there should not be a delay between the video and sound</li>
+ </ol>
+ </li>
+ <li>Just a 30 minutes recording: do steps 1.1.1-1.16 one time; then check the result recording</li>
+ <li>Just an 1 hour recording: do steps 1.1.1-1.16 one time; then check the result recording</li>
+ <li>
+ 5-minutes recording: user exits the room before the recording gets stopped
+ <ol>
+ <li>Enter a room with user A</li>
+ <li>Enter a room with user B</li>
+ <li>Open videos for both users</li>
+ <li>Start recording with user A</li>
+ <li>Exit the room by user B</li>
+ <li>Stop recording by user A</li>
+ <li>Repeat steps 1.4.1 – 1.4.6 3 times</li>
+ <li>Exit room</li>
+ <li>Wait some time</li>
+ <li>Check that all the recordings are processed and work as expected</li>
+ <li>There should not be a delay between the video and sound</li>
+ </ol>
+ </li>
+ <li>
+ 5-minutes recording: user A starts recording, user B stops
+ <ol>
+ <li>Enter a room with user A</li>
+ <li>Enter a room with user B</li>
+ <li>Open videos for both users</li>
+ <li>Start recording with user A</li>
+ <li>Stop recording by user B</li>
+ <li>Exit room</li>
+ <li>Wait some time</li>
+ <li>Check that all the recordings are processed as expected</li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <b>Conference room testing</b>
+ <ol>
+ <li>
+ Screen sharing
+ <ol>
+ <li>Enter a room with user A</li>
+ <li>Enter a room with user B</li>
+ <li>Enter a room by user C</li>
+ <li>Open videos for all the users</li>
+ <li>Start screen sharing session by user A, choose High quality</li>
+ <li>Check that A's screen looks correctly for users B and C and sound is OK in the room</li>
+ <li>Stop screen sharing by user A after 5 minutes</li>
+ <li>Repeat steps 2.1.1-2.1.7 3 times</li>
+ <li>Repeat steps 2.1.1-2.1.7 one more time, but choose "Very high quality" on the step 2.1.5</li>
+ <li>Repeat steps 2.1.1-2.1.7 one more time, but choose "Medium quality" on the step 2.1.5</li>
+ <li>Repeat steps 2.1.1-2.1.7 one more time, but choose "Low quality" on the step 2.1.5</li>
+ <li>Repeat steps 2.1.1-2.1.7 one more time, but choose some random height and width on the step 2.1.5</li>
+ <li>Repeat steps 2.1.1-2.1.7 one more time, but turn the "Notify on disconnect" switch on the step 2.1.5</li>
+ </ol>
+ </li>
+ <li>
+ Recordings
+ <ol>
+ <li>Enter a room with user A</li>
+ <li>Enter a room with user B</li>
+ <li>Enter a room by user C</li>
+ <li>Open videos for all the users</li>
+ <li>Start recording session by user A, choose High quality</li>
+ <li>Stop recording session by user A after 5 minutes</li>
+ <li>Repeat steps 2.2.1-2.2.6 3 times</li>
+ <li>Repeat steps 2.2.1-2.2.6 one more time, but choose "Very high quality" on the step 2.2.5</li>
+ <li>Repeat steps 2.2.1-2.2.6 one more time, but choose "Medium quality" on the step 2.2.5</li>
+ <li>Repeat steps 2.2.1-2.2.6 one more time, but choose "Low quality" on the step 2.2.5</li>
+ <li>Repeat steps 2.2.1-2.2.6 one more time, but choose some random height and width on the step 2.2.5</li>
+ <li>Repeat steps 2.2.1-2.2.6 one more time, but turn the "Notify on disconnect" switch on the step 2.2.5</li>
+ <li>Go to the A's recordings list and check that all the recordings are there, processed without errors and work as expected</li>
+ </ol>
+ </li>
+ <li>
+ Recordings + screen sharing: user enters the room after recording is started
+ <ol>
+ <li>Enter conference room by user A</li>
+ <li>Start screen sharing and recordings with default parameters by user A</li>
+ <li>Enter the room by user B, check that screen sharing is OK. Wait 5 minutes</li>
+ <li>Enter the room by user C, check that screen sharing is OK. Wait 5 minutes</li>
+ <li>Exit the room by user B; wait 3 minutes</li>
+ <li>Exit the room by user C; wait 3 minutes</li>
+ <li>Exit the room by user A</li>
+ <li>Repeat steps 2.3.1-2.3.7 3 times</li>
+ <li>Go to the recordings list for user A and check that all the recordings are OK and work as expected</li>
+ </ol>
+ </li>
+ <li>
+ Stress test
+ <ol>
+ <li>Enter the room by the users A, B, C, D and E</li>
+ <li>Open A, B, C, D and E videos</li>
+ <li>Start screen sharing and recordings session with high quality by user A</li>
+ <li>Wait 30 minutes</li>
+ <li>Stop screen sharing</li>
+ <li>Go to A's recordings list and check that created recording is OK</li>
+ <li>Repeat steps 2.3.1-2.3.6 3 times</li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+
+ </ol>
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/MoodlePlugin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/MoodlePlugin.xml b/openmeetings-server/src/site/xdoc/MoodlePlugin.xml
index 9248b24..8bb9935 100644
--- a/openmeetings-server/src/site/xdoc/MoodlePlugin.xml
+++ b/openmeetings-server/src/site/xdoc/MoodlePlugin.xml
@@ -1,76 +1,76 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Moodle Plugin</title>
- <author email="dev@openmeetings.apache.org">Apache 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="https://moodle.org/plugins/view.php?plugin=mod_openmeetings"
- target="_blank" rel="nofollow">Moodle Plugin database</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 <u>http://$your_moodle_host/$MOODLE_WWW_ROOT/admin</u><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>
-
- <section name="Demo video">
- <p>The demo video of SugarCRM plugin show you the plugin in action </p>
- <iframe width="640" height="390" src="http://www.youtube.com/embed/pPgv7zkPXAk" frameborder="0" allowfullscreen=""></iframe>
- </section>
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Moodle Plugin</title>
+ <author email="dev@openmeetings.apache.org">Apache 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="https://moodle.org/plugins/view.php?plugin=mod_openmeetings"
+ target="_blank" rel="nofollow">Moodle Plugin database</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 <u>http://$your_moodle_host/$MOODLE_WWW_ROOT/admin</u><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>
+
+ <section name="Demo video">
+ <p>The demo video of SugarCRM plugin show you the plugin in action </p>
+ <iframe width="640" height="390" src="http://www.youtube.com/embed/pPgv7zkPXAk" frameborder="0" allowfullscreen=""></iframe>
+ </section>
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/MySQLConfig.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/MySQLConfig.xml b/openmeetings-server/src/site/xdoc/MySQLConfig.xml
index 4b4419a..31d9bf2 100644
--- a/openmeetings-server/src/site/xdoc/MySQLConfig.xml
+++ b/openmeetings-server/src/site/xdoc/MySQLConfig.xml
@@ -1,76 +1,76 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>MySQL Configuration</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="MySQL Configuration">
-
- <subsection name="Before you start">
- <ul>
- <li>Make sure that you have set utf8 as
- default/server-character-set in your MySQL configuration (my.cnf)
- before you start the installation process of OpenMeetings!
- </li>
- <li>
- make sure MySQL is listening on TCP/IP connections!
- <br />
- To verify if MySQL connection is working: OpenMeetings will
- automatically create all tables in the database and all tables
- should have utf8 as encoding/collation!
- </li>
- <li>If you encounter issues, you can drop the db and then run
- the web based installer again
- </li>
- </ul>
- </subsection>
-
- <subsection name="Steps todo">
- <ul>
- <li>
- You need to download the JConnector from mysql
- <a href="http://www.mysql.com/downloads/connector/j/" target="_blank"
- rel="nofollow">http://www.mysql.com/downloads/connector/j/</a>
- and place it into:
- <tt>$red5/webapps/openmeetings/WEB-INF/lib/</tt>
- </li>
- <li>
- Run red5-service and goto the web-based installer:
- http://localhost:5080/openmeetings/install
- </li>
- </ul>
- </subsection>
-
- <subsection name="MySQL Sample Configuration">
- <p>
- There is a sample configuration for MySQL that ships with
- every
- release in:
- <br />
- /webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml
- </p>
- </subsection>
-
-
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>MySQL Configuration</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="MySQL Configuration">
+
+ <subsection name="Before you start">
+ <ul>
+ <li>Make sure that you have set utf8 as
+ default/server-character-set in your MySQL configuration (my.cnf)
+ before you start the installation process of OpenMeetings!
+ </li>
+ <li>
+ make sure MySQL is listening on TCP/IP connections!
+ <br />
+ To verify if MySQL connection is working: OpenMeetings will
+ automatically create all tables in the database and all tables
+ should have utf8 as encoding/collation!
+ </li>
+ <li>If you encounter issues, you can drop the db and then run
+ the web based installer again
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="Steps todo">
+ <ul>
+ <li>
+ You need to download the JConnector from mysql
+ <a href="http://www.mysql.com/downloads/connector/j/" target="_blank"
+ rel="nofollow">http://www.mysql.com/downloads/connector/j/</a>
+ and place it into:
+ <tt>$red5/webapps/openmeetings/WEB-INF/lib/</tt>
+ </li>
+ <li>
+ Run red5-service and goto the web-based installer:
+ http://localhost:5080/openmeetings/install
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="MySQL Sample Configuration">
+ <p>
+ There is a sample configuration for MySQL that ships with
+ every
+ release in:
+ <br />
+ /webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml
+ </p>
+ </subsection>
+
+
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/Navigation.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/Navigation.xml b/openmeetings-server/src/site/xdoc/Navigation.xml
index 03a7932..2b2e861 100644
--- a/openmeetings-server/src/site/xdoc/Navigation.xml
+++ b/openmeetings-server/src/site/xdoc/Navigation.xml
@@ -1,44 +1,44 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Change main navigation</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Changing the main navigation">
-
- <p>To customize the main menu (for example remove entries or changing
- the order) you can edit the tables: </p>
- <ul>
- <li>navimain </li>
- <li>naviglobal </li>
- </ul>
- <p></p>
- <p>
- You need to make sure that you
- <strong>restart red5 after doing changes to the database</strong>
- , there is a database cache, so changes might not take affect as
- long as you did not restart.
- </p>
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Change main navigation</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Changing the main navigation">
+
+ <p>To customize the main menu (for example remove entries or changing
+ the order) you can edit the tables: </p>
+ <ul>
+ <li>navimain </li>
+ <li>naviglobal </li>
+ </ul>
+ <p></p>
+ <p>
+ You need to make sure that you
+ <strong>restart red5 after doing changes to the database</strong>
+ , there is a database cache, so changes might not take affect as
+ long as you did not restart.
+ </p>
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
[24/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
index c6f2d18..140c719 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
@@ -1,191 +1,191 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.dao.room;
-
-import org.apache.openmeetings.db.entity.room.Room;
-import org.asteriskjava.manager.DefaultManagerConnection;
-import org.asteriskjava.manager.ManagerConnection;
-import org.asteriskjava.manager.ManagerConnectionFactory;
-import org.asteriskjava.manager.ResponseEvents;
-import org.asteriskjava.manager.action.ConfbridgeListAction;
-import org.asteriskjava.manager.action.DbDelAction;
-import org.asteriskjava.manager.action.DbDelTreeAction;
-import org.asteriskjava.manager.action.DbGetAction;
-import org.asteriskjava.manager.action.DbPutAction;
-import org.asteriskjava.manager.action.EventGeneratingAction;
-import org.asteriskjava.manager.action.ManagerAction;
-import org.asteriskjava.manager.action.OriginateAction;
-import org.asteriskjava.manager.response.ManagerError;
-import org.asteriskjava.manager.response.ManagerResponse;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-public class SipDao {
- private static final Logger log = Red5LoggerFactory.getLogger(SipDao.class);
- public static final String ASTERISK_OM_FAMILY = "openmeetings";
- public static final String ASTERISK_OM_KEY = "rooms";
- private String sipHostname;
- private int sipPort;
- private String sipUsername;
- private String sipPassword;
- private long timeout;
- private ManagerConnectionFactory factory;
-
- @SuppressWarnings("unused")
- private SipDao() {
- // prohibited default constructor
- }
-
- public SipDao(String sipHostname, int sipPort, String sipUsername, String sipPassword, long timeout) {
- this.sipHostname = sipHostname;
- this.sipPort = sipPort;
- this.sipUsername = sipUsername;
- this.sipPassword = sipPassword;
- this.timeout = timeout;
- factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort, this.sipUsername, this.sipPassword);
- }
-
- private ManagerConnection getConnection() {
- DefaultManagerConnection con = (DefaultManagerConnection)factory.createManagerConnection(); // TODO secure
- con.setDefaultEventTimeout(timeout);
- con.setDefaultResponseTimeout(timeout);
- con.setSocketReadTimeout((int)timeout);
- con.setSocketTimeout((int)timeout);
- return con;
- }
-
- private ManagerResponse exec(ManagerAction action) {
- if (factory == null) {
- log.warn("There is no Asterisk configured");
- return null;
- }
- ManagerConnection con = getConnection();
- try {
- con.login();
- ManagerResponse r = con.sendAction(action);
- if (r != null) {
- log.debug(r.toString());
- }
- return (r instanceof ManagerError) ? null : r;
- } catch (Exception e) {
- log.error("Error while executing ManagerAction: " + action, e);
- } finally {
- try {
- con.logoff();
- } catch (Exception e) {
- // no-op
- }
- }
- return null;
- }
-
- private ResponseEvents execEvent(EventGeneratingAction action) {
- if (factory == null) {
- log.warn("There is no Asterisk configured");
- return null;
- }
- ManagerConnection con = getConnection();
- try {
- con.login("on");
- ResponseEvents r = con.sendEventGeneratingAction(action);
- if (r != null) {
- log.debug(r.getResponse().toString());
- }
- return (r == null || r.getResponse() instanceof ManagerError) ? null : r;
- } catch (Exception e) {
- log.error("Error while executing EventGeneratingAction: " + action, e);
- } finally {
- try {
- con.logoff();
- } catch (Exception e) {
- // no-op
- }
- }
- return null;
- }
-
- private static String getKey(String confno) {
- return ASTERISK_OM_KEY + "/" + confno;
- }
-
- public String get(String confno) {
- String pin = null;
- DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY, getKey(confno));
- ManagerResponse r = exec(da);
- if (r != null) {
- pin = r.getResponse();
- }
- return pin;
- }
-
- public void update(String confno, String pin) {
- delete(confno);
- DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY, getKey(confno), pin);
- exec(da);
- }
-
- public void delete() {
- DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY);
- exec(da);
- }
-
- public void delete(String confno) {
- DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY, getKey(confno));
- exec(da);
- }
-
- public Integer countUsers(String confno) {
- if (confno == null) {
- return null;
- }
- ConfbridgeListAction da = new ConfbridgeListAction(confno);
- ResponseEvents r = execEvent(da);
- if (r != null) {
- log.debug("SipDao::countUsers size == " + r.getEvents().size());
- // "- 1" here means: ListComplete event
- return r.getEvents().size() - 1; // TODO check if was successfull
- }
- return 0;
- }
-
- /**
- * Perform call to specified phone number and join to conference
- *
- * @param number
- * number to call
- * @param r
- * room to be connected to the call
- */
- public void joinToConfCall(String number, Room r) {
- String sipNumber = (r != null && r.getConfno() != null) ? r.getConfno() : null;
- if (sipNumber == null) {
- log.warn("Failed to get SIP number for room: {}", r);
- return;
- }
-
- OriginateAction oa = new OriginateAction();
- oa.setChannel(String.format("Local/%s@rooms-originate", sipNumber));
- oa.setContext("rooms-out");
- oa.setExten(number);
- oa.setPriority(1);
- oa.setTimeout(timeout);
-
- exec(oa); //TODO handle response
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import org.apache.openmeetings.db.entity.room.Room;
+import org.asteriskjava.manager.DefaultManagerConnection;
+import org.asteriskjava.manager.ManagerConnection;
+import org.asteriskjava.manager.ManagerConnectionFactory;
+import org.asteriskjava.manager.ResponseEvents;
+import org.asteriskjava.manager.action.ConfbridgeListAction;
+import org.asteriskjava.manager.action.DbDelAction;
+import org.asteriskjava.manager.action.DbDelTreeAction;
+import org.asteriskjava.manager.action.DbGetAction;
+import org.asteriskjava.manager.action.DbPutAction;
+import org.asteriskjava.manager.action.EventGeneratingAction;
+import org.asteriskjava.manager.action.ManagerAction;
+import org.asteriskjava.manager.action.OriginateAction;
+import org.asteriskjava.manager.response.ManagerError;
+import org.asteriskjava.manager.response.ManagerResponse;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class SipDao {
+ private static final Logger log = Red5LoggerFactory.getLogger(SipDao.class);
+ public static final String ASTERISK_OM_FAMILY = "openmeetings";
+ public static final String ASTERISK_OM_KEY = "rooms";
+ private String sipHostname;
+ private int sipPort;
+ private String sipUsername;
+ private String sipPassword;
+ private long timeout;
+ private ManagerConnectionFactory factory;
+
+ @SuppressWarnings("unused")
+ private SipDao() {
+ // prohibited default constructor
+ }
+
+ public SipDao(String sipHostname, int sipPort, String sipUsername, String sipPassword, long timeout) {
+ this.sipHostname = sipHostname;
+ this.sipPort = sipPort;
+ this.sipUsername = sipUsername;
+ this.sipPassword = sipPassword;
+ this.timeout = timeout;
+ factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort, this.sipUsername, this.sipPassword);
+ }
+
+ private ManagerConnection getConnection() {
+ DefaultManagerConnection con = (DefaultManagerConnection)factory.createManagerConnection(); // TODO secure
+ con.setDefaultEventTimeout(timeout);
+ con.setDefaultResponseTimeout(timeout);
+ con.setSocketReadTimeout((int)timeout);
+ con.setSocketTimeout((int)timeout);
+ return con;
+ }
+
+ private ManagerResponse exec(ManagerAction action) {
+ if (factory == null) {
+ log.warn("There is no Asterisk configured");
+ return null;
+ }
+ ManagerConnection con = getConnection();
+ try {
+ con.login();
+ ManagerResponse r = con.sendAction(action);
+ if (r != null) {
+ log.debug(r.toString());
+ }
+ return (r instanceof ManagerError) ? null : r;
+ } catch (Exception e) {
+ log.error("Error while executing ManagerAction: " + action, e);
+ } finally {
+ try {
+ con.logoff();
+ } catch (Exception e) {
+ // no-op
+ }
+ }
+ return null;
+ }
+
+ private ResponseEvents execEvent(EventGeneratingAction action) {
+ if (factory == null) {
+ log.warn("There is no Asterisk configured");
+ return null;
+ }
+ ManagerConnection con = getConnection();
+ try {
+ con.login("on");
+ ResponseEvents r = con.sendEventGeneratingAction(action);
+ if (r != null) {
+ log.debug(r.getResponse().toString());
+ }
+ return (r == null || r.getResponse() instanceof ManagerError) ? null : r;
+ } catch (Exception e) {
+ log.error("Error while executing EventGeneratingAction: " + action, e);
+ } finally {
+ try {
+ con.logoff();
+ } catch (Exception e) {
+ // no-op
+ }
+ }
+ return null;
+ }
+
+ private static String getKey(String confno) {
+ return ASTERISK_OM_KEY + "/" + confno;
+ }
+
+ public String get(String confno) {
+ String pin = null;
+ DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY, getKey(confno));
+ ManagerResponse r = exec(da);
+ if (r != null) {
+ pin = r.getResponse();
+ }
+ return pin;
+ }
+
+ public void update(String confno, String pin) {
+ delete(confno);
+ DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY, getKey(confno), pin);
+ exec(da);
+ }
+
+ public void delete() {
+ DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY);
+ exec(da);
+ }
+
+ public void delete(String confno) {
+ DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY, getKey(confno));
+ exec(da);
+ }
+
+ public Integer countUsers(String confno) {
+ if (confno == null) {
+ return null;
+ }
+ ConfbridgeListAction da = new ConfbridgeListAction(confno);
+ ResponseEvents r = execEvent(da);
+ if (r != null) {
+ log.debug("SipDao::countUsers size == " + r.getEvents().size());
+ // "- 1" here means: ListComplete event
+ return r.getEvents().size() - 1; // TODO check if was successfull
+ }
+ return 0;
+ }
+
+ /**
+ * Perform call to specified phone number and join to conference
+ *
+ * @param number
+ * number to call
+ * @param r
+ * room to be connected to the call
+ */
+ public void joinToConfCall(String number, Room r) {
+ String sipNumber = (r != null && r.getConfno() != null) ? r.getConfno() : null;
+ if (sipNumber == null) {
+ log.warn("Failed to get SIP number for room: {}", r);
+ return;
+ }
+
+ OriginateAction oa = new OriginateAction();
+ oa.setChannel(String.format("Local/%s@rooms-originate", sipNumber));
+ oa.setContext("rooms-out");
+ oa.setExten(number);
+ oa.setPriority(1);
+ oa.setTimeout(timeout);
+
+ exec(oa); //TODO handle response
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
index 698dbe0..920647a 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
@@ -1,206 +1,206 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.dao.server;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.openmeetings.db.dto.basic.SearchResult;
-import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
-import org.apache.openmeetings.db.entity.room.Client;
-import org.apache.openmeetings.db.entity.server.Server;
-
-/**
- * Methods to add/get/remove {@link Client}s to the session
- *
- *
- * @author sebawagner
- *
- */
-public interface ISessionManager {
- void clearCache();
-
- /**
- * Notified on server start, when the session manager should be started and
- * eventually caches cleared/setup
- */
- void sessionStart();
-
- Client add(Client c, Server server);
- /**
- * add a new client item
- *
- * @param streamId
- * @param scopeName
- * @param remotePort
- * @param remoteAddress
- * @param swfUrl
- * @param server
- * @return
- */
- Client addClientListItem(String streamId, String scopeName, int remotePort, String remoteAddress, String swfUrl, Server server);
-
- Collection<Client> getClients();
-
- /**
- * loads the server into the client (only if database cache is used)
- *
- * @return
- */
- Collection<Client> getClientsWithServer();
-
- /**
- * Get a client by its streamId
- *
- * @param streamId
- * @param server
- * @return
- */
- Client getClientByStreamId(String streamId, Server server);
-
- /**
- * get a client by its publicSID and the server,
- *
- * @param publicSID
- * @param server
- * @return
- */
- Client getClientByPublicSID(String publicSID, Server server);
-
- /**
- * same as {@link #getClientByPublicSID(String, boolean, Server)} but it ignores
- * if the server part, so it will deliver any client just by its publicSID.<br/>
- * <br/>
- * <b>Note:</b>
- * This method requires more time to find the user, so under normal circumstances
- * you should use {@link #getClientByPublicSID(String, boolean, Server)}!
- *
- * @param publicSID
- * @return
- */
- ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID);
-
- /**
- *
- * @param userId
- * @return
- *
- * @deprecated There could be multiple users logged in with the same userid,
- * then this call would return a list not a single user
- */
- @Deprecated
- Client getClientByUserId(Long userId);
-
- /**
- * Update the session object of the audio/video-connection and additionally
- * swap the values to the session object of the user that holds the full
- * session object
- *
- * @param streamId
- * @param rcm
- * @return
- */
- boolean updateAVClientByStreamId(String streamId, Client rcm, Server server);
-
- /**
- * Update the session object
- *
- * updateRoomCount is only <i>one</i> time true, in
- * ScopeApplicationAdapter#setRoomValues(Long, Boolean, Boolean, String)
- * .
- *
- * @param streamId
- * @param rcm
- * @param updateRoomCount
- * true means the count for the room has to be updated
- * @return
- */
- boolean updateClientByStreamId(String streamId, Client rcm, boolean updateRoomCount, Server server);
-
- /**
- * Remove a client from the session store
- *
- * @param streamId
- * @return
- */
- boolean removeClient(String streamId, Server server);
-
- /**
- * Get all ClientList Objects of that room and domain This Function is
- * needed cause it is invoked internally AFTER the current user has been
- * already removed from the ClientList to see if the Room is empty again and
- * the PollList can be removed
- * @param roomId
- * @return
- */
- List<Client> getClientListByRoom(Long roomId);
-
- Collection<Client> getClientListByRoomAll(Long roomId);
-
- /**
- * get the current Moderator in this room
- *
- * @param roomname
- * @return
- */
- List<Client> getCurrentModeratorByRoom(Long roomId);
-
- /**
- * Get list of current client sessions
- *
- * @param start
- * @param max
- * @param orderby
- * @param asc
- * @return
- */
- SearchResult<Client> getListByStartAndMax(int start, int max, String orderby, boolean asc);
-
- /**
- * returns number of current users recording
- *
- * @param roomId
- * @return
- */
- long getRecordingCount(long roomId);
-
- /**
- * returns a number of current users publishing screensharing
- *
- * @param roomId
- * @return
- */
- long getPublishingCount(long roomId);
-
- /**
- * Get a list of all servers of all rooms on that server, serverId = null
- * means it is a local session on the master.
- *
- * @param server
- * @return a set, a roomId can be only one time in this list
- */
- List<Long> getActiveRoomIdsByServer(Server server);
-
- /**
- * Get some statistics about the current sessions
- *
- * @return
- */
- String getSessionStatistics();
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.dao.server;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+
+/**
+ * Methods to add/get/remove {@link Client}s to the session
+ *
+ *
+ * @author sebawagner
+ *
+ */
+public interface ISessionManager {
+ void clearCache();
+
+ /**
+ * Notified on server start, when the session manager should be started and
+ * eventually caches cleared/setup
+ */
+ void sessionStart();
+
+ Client add(Client c, Server server);
+ /**
+ * add a new client item
+ *
+ * @param streamId
+ * @param scopeName
+ * @param remotePort
+ * @param remoteAddress
+ * @param swfUrl
+ * @param server
+ * @return
+ */
+ Client addClientListItem(String streamId, String scopeName, int remotePort, String remoteAddress, String swfUrl, Server server);
+
+ Collection<Client> getClients();
+
+ /**
+ * loads the server into the client (only if database cache is used)
+ *
+ * @return
+ */
+ Collection<Client> getClientsWithServer();
+
+ /**
+ * Get a client by its streamId
+ *
+ * @param streamId
+ * @param server
+ * @return
+ */
+ Client getClientByStreamId(String streamId, Server server);
+
+ /**
+ * get a client by its publicSID and the server,
+ *
+ * @param publicSID
+ * @param server
+ * @return
+ */
+ Client getClientByPublicSID(String publicSID, Server server);
+
+ /**
+ * same as {@link #getClientByPublicSID(String, boolean, Server)} but it ignores
+ * if the server part, so it will deliver any client just by its publicSID.<br/>
+ * <br/>
+ * <b>Note:</b>
+ * This method requires more time to find the user, so under normal circumstances
+ * you should use {@link #getClientByPublicSID(String, boolean, Server)}!
+ *
+ * @param publicSID
+ * @return
+ */
+ ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID);
+
+ /**
+ *
+ * @param userId
+ * @return
+ *
+ * @deprecated There could be multiple users logged in with the same userid,
+ * then this call would return a list not a single user
+ */
+ @Deprecated
+ Client getClientByUserId(Long userId);
+
+ /**
+ * Update the session object of the audio/video-connection and additionally
+ * swap the values to the session object of the user that holds the full
+ * session object
+ *
+ * @param streamId
+ * @param rcm
+ * @return
+ */
+ boolean updateAVClientByStreamId(String streamId, Client rcm, Server server);
+
+ /**
+ * Update the session object
+ *
+ * updateRoomCount is only <i>one</i> time true, in
+ * ScopeApplicationAdapter#setRoomValues(Long, Boolean, Boolean, String)
+ * .
+ *
+ * @param streamId
+ * @param rcm
+ * @param updateRoomCount
+ * true means the count for the room has to be updated
+ * @return
+ */
+ boolean updateClientByStreamId(String streamId, Client rcm, boolean updateRoomCount, Server server);
+
+ /**
+ * Remove a client from the session store
+ *
+ * @param streamId
+ * @return
+ */
+ boolean removeClient(String streamId, Server server);
+
+ /**
+ * Get all ClientList Objects of that room and domain This Function is
+ * needed cause it is invoked internally AFTER the current user has been
+ * already removed from the ClientList to see if the Room is empty again and
+ * the PollList can be removed
+ * @param roomId
+ * @return
+ */
+ List<Client> getClientListByRoom(Long roomId);
+
+ Collection<Client> getClientListByRoomAll(Long roomId);
+
+ /**
+ * get the current Moderator in this room
+ *
+ * @param roomname
+ * @return
+ */
+ List<Client> getCurrentModeratorByRoom(Long roomId);
+
+ /**
+ * Get list of current client sessions
+ *
+ * @param start
+ * @param max
+ * @param orderby
+ * @param asc
+ * @return
+ */
+ SearchResult<Client> getListByStartAndMax(int start, int max, String orderby, boolean asc);
+
+ /**
+ * returns number of current users recording
+ *
+ * @param roomId
+ * @return
+ */
+ long getRecordingCount(long roomId);
+
+ /**
+ * returns a number of current users publishing screensharing
+ *
+ * @param roomId
+ * @return
+ */
+ long getPublishingCount(long roomId);
+
+ /**
+ * Get a list of all servers of all rooms on that server, serverId = null
+ * means it is a local session on the master.
+ *
+ * @param server
+ * @return a set, a roomId can be only one time in this list
+ */
+ List<Long> getActiveRoomIdsByServer(Server server);
+
+ /**
+ * Get some statistics about the current sessions
+ *
+ * @return
+ */
+ String getSessionStatistics();
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java
index ed612eb..dad22cf 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java
@@ -1,222 +1,222 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.dao.server;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.util.Date;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-
-import org.apache.openmeetings.db.dao.IDataProviderDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.util.DaoHelper;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- *
- * CRUD for {@link Server}
- *
- * @author solomax, sebawagner
- *
- */
-@Transactional
-public class ServerDao implements IDataProviderDao<Server> {
- private static final Logger log = Red5LoggerFactory.getLogger(ServerDao.class, webAppRootKey);
- public final static String[] searchFields = { "name", "address", "comment" };
-
- @PersistenceContext
- private EntityManager em;
-
- @Autowired
- private UserDao userDao;
-
- /**
- * Get a list of all available servers
- *
- * @return
- */
- public List<Server> getServerList() {
- log.debug("getServerList enter");
- TypedQuery<Server> q = em.createNamedQuery("getAllServers",
- Server.class);
- return q.getResultList();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.openmeetings.data.OmDAO#get(int, int)
- */
- @Override
- public List<Server> get(int start, int max) {
- TypedQuery<Server> q = em.createNamedQuery("getAllServers", Server.class);
- q.setFirstResult(start);
- q.setMaxResults(max);
- return q.getResultList();
- }
-
- @Override
- public List<Server> get(String search, int start, int count, String order) {
- TypedQuery<Server> q = em.createQuery(DaoHelper.getSearchQuery(
- "Server", "s", search, true, false, order, searchFields),
- Server.class);
- q.setFirstResult(start);
- q.setMaxResults(count);
- return q.getResultList();
- }
-
- /**
- * get the list of all servers in the cluster that are ready to receive a
- * ping (active = true)
- *
- * @return
- */
- public List<Server> getActiveServers() {
- return em.createNamedQuery("getActiveServers", Server.class)
- .getResultList();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.openmeetings.data.OmDAO#count()
- */
- @Override
- public long count() {
- log.debug("getServerCount enter");
- TypedQuery<Long> q = em.createNamedQuery("getServerCount", Long.class);
-
- return q.getSingleResult();
- }
-
- @Override
- public long count(String search) {
- TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Server",
- "s", search, true, true, null, searchFields), Long.class);
- return q.getSingleResult();
- }
-
- @Override
- public Server get(long id) {
- return get(Long.valueOf(id));
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.openmeetings.data.OmDAO#get(long)
- */
- @Override
- public Server get(Long id) {
- Server result = null;
- log.debug("getServer enter, id = " + id);
- TypedQuery<Server> q = em.createNamedQuery("getServerById",
- Server.class);
- q.setParameter("id", id);
- try {
- result = q.getSingleResult();
- } catch (NoResultException e) {
- // noop
- }
- return result;
- }
-
- /**
- * Get server by its address
- *
- * @param address
- * @return
- */
- public Server getServerByAddress(String address) {
- log.debug("getServer enter, address = " + address);
- TypedQuery<Server> q = em.createNamedQuery("getServerByAddress",
- Server.class);
- q.setParameter("address", address);
- List<Server> list = q.getResultList();
- return list.size() > 0 ? list.get(0) : null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
- * .beans.OmEntity, long)
- */
- @Override
- public Server update(Server entity, Long userId) {
- entity.setDeleted(false);
- if (entity.getId() == null) {
- entity.setInserted(new Date());
- if (userId != null) {
- entity.setInsertedby(userDao.get(userId));
- }
- em.persist(entity);
- } else {
- entity.setUpdated(new Date());
- if (userId != null) {
- entity.setUpdatedby(userDao.get(userId));
- }
- em.merge(entity);
- }
- return entity;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
- * .beans.OmEntity, long)
- */
- @Override
- public void delete(Server entity, Long userId) {
- if (entity.getId() != null) {
- entity.setUpdated(new Date());
- if (userId != null) {
- entity.setUpdatedby(userDao.get(userId));
- }
- entity.setDeleted(true);
- em.merge(entity);
- }
- }
-
- /**
- * get {@link Server} by name
- *
- * @param name
- * @return
- */
- public List<Server> getServersByName(String name) {
- TypedQuery<Server> q = em.createNamedQuery("getServerByName",
- Server.class);
- q.setParameter("name", name);
- return q.getResultList();
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.dao.server;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.util.DaoHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ *
+ * CRUD for {@link Server}
+ *
+ * @author solomax, sebawagner
+ *
+ */
+@Transactional
+public class ServerDao implements IDataProviderDao<Server> {
+ private static final Logger log = Red5LoggerFactory.getLogger(ServerDao.class, webAppRootKey);
+ public final static String[] searchFields = { "name", "address", "comment" };
+
+ @PersistenceContext
+ private EntityManager em;
+
+ @Autowired
+ private UserDao userDao;
+
+ /**
+ * Get a list of all available servers
+ *
+ * @return
+ */
+ public List<Server> getServerList() {
+ log.debug("getServerList enter");
+ TypedQuery<Server> q = em.createNamedQuery("getAllServers",
+ Server.class);
+ return q.getResultList();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.openmeetings.data.OmDAO#get(int, int)
+ */
+ @Override
+ public List<Server> get(int start, int max) {
+ TypedQuery<Server> q = em.createNamedQuery("getAllServers", Server.class);
+ q.setFirstResult(start);
+ q.setMaxResults(max);
+ return q.getResultList();
+ }
+
+ @Override
+ public List<Server> get(String search, int start, int count, String order) {
+ TypedQuery<Server> q = em.createQuery(DaoHelper.getSearchQuery(
+ "Server", "s", search, true, false, order, searchFields),
+ Server.class);
+ q.setFirstResult(start);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
+ /**
+ * get the list of all servers in the cluster that are ready to receive a
+ * ping (active = true)
+ *
+ * @return
+ */
+ public List<Server> getActiveServers() {
+ return em.createNamedQuery("getActiveServers", Server.class)
+ .getResultList();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.openmeetings.data.OmDAO#count()
+ */
+ @Override
+ public long count() {
+ log.debug("getServerCount enter");
+ TypedQuery<Long> q = em.createNamedQuery("getServerCount", Long.class);
+
+ return q.getSingleResult();
+ }
+
+ @Override
+ public long count(String search) {
+ TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Server",
+ "s", search, true, true, null, searchFields), Long.class);
+ return q.getSingleResult();
+ }
+
+ @Override
+ public Server get(long id) {
+ return get(Long.valueOf(id));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.openmeetings.data.OmDAO#get(long)
+ */
+ @Override
+ public Server get(Long id) {
+ Server result = null;
+ log.debug("getServer enter, id = " + id);
+ TypedQuery<Server> q = em.createNamedQuery("getServerById",
+ Server.class);
+ q.setParameter("id", id);
+ try {
+ result = q.getSingleResult();
+ } catch (NoResultException e) {
+ // noop
+ }
+ return result;
+ }
+
+ /**
+ * Get server by its address
+ *
+ * @param address
+ * @return
+ */
+ public Server getServerByAddress(String address) {
+ log.debug("getServer enter, address = " + address);
+ TypedQuery<Server> q = em.createNamedQuery("getServerByAddress",
+ Server.class);
+ q.setParameter("address", address);
+ List<Server> list = q.getResultList();
+ return list.size() > 0 ? list.get(0) : null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
+ * .beans.OmEntity, long)
+ */
+ @Override
+ public Server update(Server entity, Long userId) {
+ entity.setDeleted(false);
+ if (entity.getId() == null) {
+ entity.setInserted(new Date());
+ if (userId != null) {
+ entity.setInsertedby(userDao.get(userId));
+ }
+ em.persist(entity);
+ } else {
+ entity.setUpdated(new Date());
+ if (userId != null) {
+ entity.setUpdatedby(userDao.get(userId));
+ }
+ em.merge(entity);
+ }
+ return entity;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
+ * .beans.OmEntity, long)
+ */
+ @Override
+ public void delete(Server entity, Long userId) {
+ if (entity.getId() != null) {
+ entity.setUpdated(new Date());
+ if (userId != null) {
+ entity.setUpdatedby(userDao.get(userId));
+ }
+ entity.setDeleted(true);
+ em.merge(entity);
+ }
+ }
+
+ /**
+ * get {@link Server} by name
+ *
+ * @param name
+ * @return
+ */
+ public List<Server> getServersByName(String name) {
+ TypedQuery<Server> q = em.createNamedQuery("getServerByName",
+ Server.class);
+ q.setParameter("name", name);
+ return q.getResultList();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
index 423b05c..d74064e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
@@ -1,146 +1,146 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.dao.user;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-
-import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.util.DaoHelper;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public class GroupDao implements IGroupAdminDataProviderDao<Group> {
- public final static String[] searchFields = {"name"};
- @PersistenceContext
- private EntityManager em;
-
- @Override
- public Group get(long id) {
- return get(Long.valueOf(id));
- }
-
- @Override
- public Group get(Long id) {
- TypedQuery<Group> query = em.createNamedQuery("getGroupById", Group.class);
- query.setParameter("id", id);
- Group o = null;
- try {
- o = query.getSingleResult();
- } catch (NoResultException e) {
- // o = null;
- }
- return o;
- }
-
- public Group get(String name) {
- List<Group> groups = em.createNamedQuery("getGroupByName", Group.class).setParameter("name", name).getResultList();
- return groups == null || groups.isEmpty() ? null : groups.get(0);
- }
-
- @Override
- public List<Group> get(int start, int count) {
- TypedQuery<Group> q = em.createNamedQuery("getNondeletedGroups", Group.class);
- q.setFirstResult(start);
- q.setMaxResults(count);
- return q.getResultList();
- }
-
- @Override
- public List<Group> get(String search, int start, int count, String sort) {
- TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("Group", "g", search, true, false, sort, searchFields), Group.class);
- q.setFirstResult(start);
- q.setMaxResults(count);
- return q.getResultList();
- }
-
- @Override
- public List<Group> get(String search, Long adminId, int start, int count, String order) {
- TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, false
- , "gu.user.id = :adminId AND gu.moderator = true", order, searchFields), Group.class);
- q.setParameter("adminId", adminId);
- q.setFirstResult(start);
- q.setMaxResults(count);
- return q.getResultList();
- }
-
- @Override
- public long count() {
- TypedQuery<Long> q = em.createNamedQuery("countGroups", Long.class);
- return q.getSingleResult();
- }
-
- @Override
- public long count(String search) {
- TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Group", "o", search, true, true, null, searchFields), Long.class);
- return q.getSingleResult();
- }
-
- @Override
- public long count(String search, Long adminId) {
- TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, true
- , "gu.user.id = :adminId AND gu.moderator = true", null, searchFields), Long.class);
- q.setParameter("adminId", adminId);
- return q.getSingleResult();
- }
-
- public List<Group> get(Collection<Long> ids) {
- return em.createNamedQuery("getGroupsByIds", Group.class).setParameter("ids", ids).getResultList();
- }
-
- public List<Group> getLimited() {
- return em.createNamedQuery("getLimitedGroups", Group.class).getResultList();
- }
-
- @Override
- public Group update(Group entity, Long userId) {
- if (entity.getId() == null) {
- if (userId != null) {
- entity.setInsertedby(userId);
- }
- entity.setInserted(new Date());
- em.persist(entity);
- } else {
- if (userId != null) {
- entity.setUpdatedby(userId);
- }
- entity.setUpdated(new Date());
- em.merge(entity);
- }
- return entity;
- }
-
- @Override
- public void delete(Group g, Long userId) {
- em.createNamedQuery("deleteGroupUsersByGroup").setParameter("id", g.getId()).executeUpdate();
-
- g.setDeleted(true);
- if (userId != null) {
- g.setUpdatedby(userId);
- }
- em.merge(g);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.util.DaoHelper;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class GroupDao implements IGroupAdminDataProviderDao<Group> {
+ public final static String[] searchFields = {"name"};
+ @PersistenceContext
+ private EntityManager em;
+
+ @Override
+ public Group get(long id) {
+ return get(Long.valueOf(id));
+ }
+
+ @Override
+ public Group get(Long id) {
+ TypedQuery<Group> query = em.createNamedQuery("getGroupById", Group.class);
+ query.setParameter("id", id);
+ Group o = null;
+ try {
+ o = query.getSingleResult();
+ } catch (NoResultException e) {
+ // o = null;
+ }
+ return o;
+ }
+
+ public Group get(String name) {
+ List<Group> groups = em.createNamedQuery("getGroupByName", Group.class).setParameter("name", name).getResultList();
+ return groups == null || groups.isEmpty() ? null : groups.get(0);
+ }
+
+ @Override
+ public List<Group> get(int start, int count) {
+ TypedQuery<Group> q = em.createNamedQuery("getNondeletedGroups", Group.class);
+ q.setFirstResult(start);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
+ @Override
+ public List<Group> get(String search, int start, int count, String sort) {
+ TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("Group", "g", search, true, false, sort, searchFields), Group.class);
+ q.setFirstResult(start);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
+ @Override
+ public List<Group> get(String search, Long adminId, int start, int count, String order) {
+ TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, false
+ , "gu.user.id = :adminId AND gu.moderator = true", order, searchFields), Group.class);
+ q.setParameter("adminId", adminId);
+ q.setFirstResult(start);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
+ @Override
+ public long count() {
+ TypedQuery<Long> q = em.createNamedQuery("countGroups", Long.class);
+ return q.getSingleResult();
+ }
+
+ @Override
+ public long count(String search) {
+ TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Group", "o", search, true, true, null, searchFields), Long.class);
+ return q.getSingleResult();
+ }
+
+ @Override
+ public long count(String search, Long adminId) {
+ TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, true
+ , "gu.user.id = :adminId AND gu.moderator = true", null, searchFields), Long.class);
+ q.setParameter("adminId", adminId);
+ return q.getSingleResult();
+ }
+
+ public List<Group> get(Collection<Long> ids) {
+ return em.createNamedQuery("getGroupsByIds", Group.class).setParameter("ids", ids).getResultList();
+ }
+
+ public List<Group> getLimited() {
+ return em.createNamedQuery("getLimitedGroups", Group.class).getResultList();
+ }
+
+ @Override
+ public Group update(Group entity, Long userId) {
+ if (entity.getId() == null) {
+ if (userId != null) {
+ entity.setInsertedby(userId);
+ }
+ entity.setInserted(new Date());
+ em.persist(entity);
+ } else {
+ if (userId != null) {
+ entity.setUpdatedby(userId);
+ }
+ entity.setUpdated(new Date());
+ em.merge(entity);
+ }
+ return entity;
+ }
+
+ @Override
+ public void delete(Group g, Long userId) {
+ em.createNamedQuery("deleteGroupUsersByGroup").setParameter("id", g.getId()).executeUpdate();
+
+ g.setDeleted(true);
+ if (userId != null) {
+ g.setUpdatedby(userId);
+ }
+ em.merge(g);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
index 53d85a7..bcc6d5c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
@@ -1,124 +1,124 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.dao.user;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-
-import org.apache.openmeetings.db.dao.IDataProviderDao;
-import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.util.DaoHelper;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public class GroupUserDao implements IDataProviderDao<GroupUser> {
- @PersistenceContext
- private EntityManager em;
- public final static String[] searchFields = {"user.lastname", "user.firstname", "user.login", "user.address.email"};
-
- @Override
- public GroupUser get(long id) {
- return get(Long.valueOf(id));
- }
-
- @Override
- public GroupUser get(Long id) {
- TypedQuery<GroupUser> q = em.createNamedQuery("getGroupUsersById", GroupUser.class);
- q.setParameter("id", id);
- return q.getSingleResult();
- }
-
- @Override
- public List<GroupUser> get(int start, int count) {
- throw new RuntimeException("Should not be used");
- }
-
- @Override
- public List<GroupUser> get(String search, int start, int count, String sort) {
- throw new RuntimeException("Should not be used");
- }
-
- public List<GroupUser> get(long groupId, String search, int start, int count, String sort) {
- TypedQuery<GroupUser> q = em.createQuery(DaoHelper.getSearchQuery(GroupUser.class.getSimpleName(), "ou", null, search, false, false, "ou.group.id = :groupId", sort, searchFields), GroupUser.class);
- q.setParameter("groupId", groupId);
- q.setFirstResult(start);
- q.setMaxResults(count);
- return q.getResultList();
- }
-
- public List<GroupUser> get(long groupId, int start, int count) {
- TypedQuery<GroupUser> q = em.createNamedQuery("getGroupUsersByGroupId", GroupUser.class);
- q.setParameter("id", groupId);
- q.setFirstResult(start);
- q.setMaxResults(count);
- return q.getResultList();
- }
-
- public GroupUser getByGroupAndUser(long groupId, long userId) {
- try {
- List<GroupUser> list = em.createNamedQuery("isUserInGroup", GroupUser.class)
- .setParameter("groupId", groupId).setParameter("userId", userId).getResultList();
- if (list != null && !list.isEmpty()) {
- return list.get(0);
- }
- } catch (Exception e) {
- //no-op
- }
- return null;
- }
-
- public boolean isUserInGroup(long groupId, long userId) {
- return em.createNamedQuery("isUserInGroup", GroupUser.class)
- .setParameter("groupId", groupId).setParameter("userId", userId).getResultList().size() > 0;
- }
-
- @Override
- public long count() {
- throw new RuntimeException("Should not be used");
- }
-
- @Override
- public long count(String search) {
- throw new RuntimeException("Should not be used");
- }
-
- public long count(long groupId, String search) {
- TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery(GroupUser.class.getSimpleName(), "ou", search, false, true, null, searchFields), Long.class);
- return q.getSingleResult();
- }
-
- public long count(long groupId) {
- TypedQuery<Long> q = em.createNamedQuery("countGroupUsers", Long.class);
- q.setParameter("id", groupId);
- return q.getSingleResult();
- }
-
- @Override
- public GroupUser update(GroupUser entity, Long userId) {
- throw new RuntimeException("Should not be used");
- }
-
- @Override
- public void delete(GroupUser entity, Long userId) {
- throw new RuntimeException("Should not be used");
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.util.DaoHelper;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class GroupUserDao implements IDataProviderDao<GroupUser> {
+ @PersistenceContext
+ private EntityManager em;
+ public final static String[] searchFields = {"user.lastname", "user.firstname", "user.login", "user.address.email"};
+
+ @Override
+ public GroupUser get(long id) {
+ return get(Long.valueOf(id));
+ }
+
+ @Override
+ public GroupUser get(Long id) {
+ TypedQuery<GroupUser> q = em.createNamedQuery("getGroupUsersById", GroupUser.class);
+ q.setParameter("id", id);
+ return q.getSingleResult();
+ }
+
+ @Override
+ public List<GroupUser> get(int start, int count) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ @Override
+ public List<GroupUser> get(String search, int start, int count, String sort) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ public List<GroupUser> get(long groupId, String search, int start, int count, String sort) {
+ TypedQuery<GroupUser> q = em.createQuery(DaoHelper.getSearchQuery(GroupUser.class.getSimpleName(), "ou", null, search, false, false, "ou.group.id = :groupId", sort, searchFields), GroupUser.class);
+ q.setParameter("groupId", groupId);
+ q.setFirstResult(start);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
+ public List<GroupUser> get(long groupId, int start, int count) {
+ TypedQuery<GroupUser> q = em.createNamedQuery("getGroupUsersByGroupId", GroupUser.class);
+ q.setParameter("id", groupId);
+ q.setFirstResult(start);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
+ public GroupUser getByGroupAndUser(long groupId, long userId) {
+ try {
+ List<GroupUser> list = em.createNamedQuery("isUserInGroup", GroupUser.class)
+ .setParameter("groupId", groupId).setParameter("userId", userId).getResultList();
+ if (list != null && !list.isEmpty()) {
+ return list.get(0);
+ }
+ } catch (Exception e) {
+ //no-op
+ }
+ return null;
+ }
+
+ public boolean isUserInGroup(long groupId, long userId) {
+ return em.createNamedQuery("isUserInGroup", GroupUser.class)
+ .setParameter("groupId", groupId).setParameter("userId", userId).getResultList().size() > 0;
+ }
+
+ @Override
+ public long count() {
+ throw new RuntimeException("Should not be used");
+ }
+
+ @Override
+ public long count(String search) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ public long count(long groupId, String search) {
+ TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery(GroupUser.class.getSimpleName(), "ou", search, false, true, null, searchFields), Long.class);
+ return q.getSingleResult();
+ }
+
+ public long count(long groupId) {
+ TypedQuery<Long> q = em.createNamedQuery("countGroupUsers", Long.class);
+ q.setParameter("id", groupId);
+ return q.getSingleResult();
+ }
+
+ @Override
+ public GroupUser update(GroupUser entity, Long userId) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ @Override
+ public void delete(GroupUser entity, Long userId) {
+ throw new RuntimeException("Should not be used");
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
index 5562c37..dc14f03 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
@@ -1,199 +1,199 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.entity.basic;
-
-import java.util.Calendar;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Lob;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-
-@Entity
-@NamedQueries({
- @NamedQuery(name = "getMailMessageById", query = "SELECT m FROM MailMessage m WHERE m.id = :id")
- , @NamedQuery(name = "getMailMessages", query = "SELECT m FROM MailMessage m ORDER BY m.updated, m.inserted")
- , @NamedQuery(name = "getMailMessagesByStatus", query = "SELECT m FROM MailMessage m WHERE m.status = :status ORDER BY m.updated, m.inserted")
- , @NamedQuery(name = "countMailMessages", query = "SELECT COUNT(m) FROM MailMessage m")
- , @NamedQuery(name = "resetMailStatusByDate", query = "UPDATE MailMessage m SET m.status = :noneStatus WHERE m.status = :sendingStatus AND m.updated < :date")
- , @NamedQuery(name = "resetMailStatusById", query = "UPDATE MailMessage m SET m.errorCount = 0, m.status = :noneStatus WHERE m.id = :id")
-})
-@Table(name = "email_queue")
-public class MailMessage implements IDataProviderEntity {
- private static final long serialVersionUID = 1L;
-
- public enum Status {
- NONE, SENDING, ERROR, DONE
- }
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "id")
- private Long id;
-
- @Lob
- @Column(name = "recipients")
- private String recipients;
-
- @Column(name = "replyTo")
- private String replyTo;
-
- @Column(name = "subject")
- private String subject;
-
- @Lob
- @Column(name = "body")
- private String body;
-
- @Lob
- @Column(name = "ics")
- private byte[] ics;
-
- @Column(name = "status", nullable = false)
- @Enumerated(EnumType.STRING)
- private Status status = Status.NONE;
-
- @Column(name = "inserted")
- private Calendar inserted;
-
- @Column(name = "updated")
- private Calendar updated;
-
- @Column(name = "error_count", nullable = false)
- private int errorCount = 0;
-
- @Lob
- @Column(name = "last_error")
- private String lastError;
-
- public MailMessage() {
- this(null, null, null, null, null);
- }
-
- public MailMessage(String recipients, String replyTo, String subject, String body) {
- this(recipients, replyTo, subject, body, null);
- }
-
- public MailMessage(String recipients, String replyTo, String subject, String body, byte[] ics) {
- this.recipients = recipients;
- this.replyTo = replyTo;
- this.subject = subject;
- this.body = body;
- this.ics = ics;
- }
-
- @Override
- public Long getId() {
- return id;
- }
-
- @Override
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getRecipients() {
- return recipients;
- }
-
- public void setRecipients(String recipients) {
- this.recipients = recipients;
- }
-
- public String getReplyTo() {
- return replyTo;
- }
-
- public void setReplyTo(String replyTo) {
- this.replyTo = replyTo;
- }
-
- public String getSubject() {
- return subject;
- }
-
- public void setSubject(String subject) {
- this.subject = subject;
- }
-
- public String getBody() {
- return body;
- }
-
- public void setBody(String body) {
- this.body = body;
- }
-
- public Status getStatus() {
- return status;
- }
-
- public void setStatus(Status status) {
- this.status = status;
- }
-
- public Calendar getInserted() {
- return inserted;
- }
-
- public void setInserted(Calendar inserted) {
- this.inserted = inserted;
- }
-
- public Calendar getUpdated() {
- return updated;
- }
-
- public void setUpdated(Calendar updated) {
- this.updated = updated;
- }
-
- public byte[] getIcs() {
- return ics;
- }
-
- public void setIcs(byte[] ics) {
- this.ics = ics;
- }
-
- public int getErrorCount() {
- return errorCount;
- }
-
- public void setErrorCount(int errorCount) {
- this.errorCount = errorCount;
- }
-
- public String getLastError() {
- return lastError;
- }
-
- public void setLastError(String lastError) {
- this.lastError = lastError;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.entity.basic;
+
+import java.util.Calendar;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+
+@Entity
+@NamedQueries({
+ @NamedQuery(name = "getMailMessageById", query = "SELECT m FROM MailMessage m WHERE m.id = :id")
+ , @NamedQuery(name = "getMailMessages", query = "SELECT m FROM MailMessage m ORDER BY m.updated, m.inserted")
+ , @NamedQuery(name = "getMailMessagesByStatus", query = "SELECT m FROM MailMessage m WHERE m.status = :status ORDER BY m.updated, m.inserted")
+ , @NamedQuery(name = "countMailMessages", query = "SELECT COUNT(m) FROM MailMessage m")
+ , @NamedQuery(name = "resetMailStatusByDate", query = "UPDATE MailMessage m SET m.status = :noneStatus WHERE m.status = :sendingStatus AND m.updated < :date")
+ , @NamedQuery(name = "resetMailStatusById", query = "UPDATE MailMessage m SET m.errorCount = 0, m.status = :noneStatus WHERE m.id = :id")
+})
+@Table(name = "email_queue")
+public class MailMessage implements IDataProviderEntity {
+ private static final long serialVersionUID = 1L;
+
+ public enum Status {
+ NONE, SENDING, ERROR, DONE
+ }
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private Long id;
+
+ @Lob
+ @Column(name = "recipients")
+ private String recipients;
+
+ @Column(name = "replyTo")
+ private String replyTo;
+
+ @Column(name = "subject")
+ private String subject;
+
+ @Lob
+ @Column(name = "body")
+ private String body;
+
+ @Lob
+ @Column(name = "ics")
+ private byte[] ics;
+
+ @Column(name = "status", nullable = false)
+ @Enumerated(EnumType.STRING)
+ private Status status = Status.NONE;
+
+ @Column(name = "inserted")
+ private Calendar inserted;
+
+ @Column(name = "updated")
+ private Calendar updated;
+
+ @Column(name = "error_count", nullable = false)
+ private int errorCount = 0;
+
+ @Lob
+ @Column(name = "last_error")
+ private String lastError;
+
+ public MailMessage() {
+ this(null, null, null, null, null);
+ }
+
+ public MailMessage(String recipients, String replyTo, String subject, String body) {
+ this(recipients, replyTo, subject, body, null);
+ }
+
+ public MailMessage(String recipients, String replyTo, String subject, String body, byte[] ics) {
+ this.recipients = recipients;
+ this.replyTo = replyTo;
+ this.subject = subject;
+ this.body = body;
+ this.ics = ics;
+ }
+
+ @Override
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getRecipients() {
+ return recipients;
+ }
+
+ public void setRecipients(String recipients) {
+ this.recipients = recipients;
+ }
+
+ public String getReplyTo() {
+ return replyTo;
+ }
+
+ public void setReplyTo(String replyTo) {
+ this.replyTo = replyTo;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+ public String getBody() {
+ return body;
+ }
+
+ public void setBody(String body) {
+ this.body = body;
+ }
+
+ public Status getStatus() {
+ return status;
+ }
+
+ public void setStatus(Status status) {
+ this.status = status;
+ }
+
+ public Calendar getInserted() {
+ return inserted;
+ }
+
+ public void setInserted(Calendar inserted) {
+ this.inserted = inserted;
+ }
+
+ public Calendar getUpdated() {
+ return updated;
+ }
+
+ public void setUpdated(Calendar updated) {
+ this.updated = updated;
+ }
+
+ public byte[] getIcs() {
+ return ics;
+ }
+
+ public void setIcs(byte[] ics) {
+ this.ics = ics;
+ }
+
+ public int getErrorCount() {
+ return errorCount;
+ }
+
+ public void setErrorCount(int errorCount) {
+ this.errorCount = errorCount;
+ }
+
+ public String getLastError() {
+ return lastError;
+ }
+
+ public void setLastError(String lastError) {
+ this.lastError = lastError;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java
index 7859b49..046bc92 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java
@@ -1,304 +1,304 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.entity.server;
-
-import java.util.Calendar;
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-import org.apache.openmeetings.db.entity.user.User;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
-
-@Entity
-@NamedQueries({
- @NamedQuery(name = "getAllServers", query = "SELECT s FROM Server s WHERE s.deleted = false ORDER BY s.id"),
- @NamedQuery(name = "getServerCount", query = "SELECT COUNT(s) FROM Server s WHERE s.deleted = false"),
- @NamedQuery(name = "getServerById", query = "SELECT s FROM Server s LEFT JOIN FETCH s.insertedby LEFT JOIN FETCH s.updatedby WHERE s.deleted = false AND s.id = :id"),
- @NamedQuery(name = "getServerByName", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.name LIKE :name"),
- @NamedQuery(name = "getServerByAddress", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.address LIKE :address"),
- @NamedQuery(name = "getServersWithNoUsers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN (SELECT u.server.id FROM User u where u.server.id IS NOT NULL)"),
- @NamedQuery(name = "getServerWithMinimumUsers", query = "SELECT s.id, COUNT(u) AS cnt FROM User u JOIN u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt"),
- @NamedQuery(name = "getActiveServers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.active = true") //
-})
-@Table(name = "server")
-@Root
-@XmlRootElement
-@XmlAccessorType(XmlAccessType.FIELD)
-public class Server implements IDataProviderEntity {
- private static final long serialVersionUID = 1L;
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "id")
- @Element(data = true)
- private Long id;
-
- @Column(name = "name")
- @Element(data = true)
- private String name;
-
- @Column(name = "address")
- @Element(data = true)
- private String address;
-
- @Column(name = "inserted")
- public Date inserted;
-
- @Column(name = "updated")
- public Date updated;
-
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "insertedby_id", updatable = true, insertable = true)
- @ForeignKey(enabled = true)
- public User insertedby;
-
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "updatedby_id", updatable = true, insertable = true)
- @ForeignKey(enabled = true)
- public User updatedby;
-
- @Lob
- @Column(name = "comment", length = 2048)
- @Element(data = true, required = false)
- private String comment;
-
- @Column(name = "last_ping", nullable = true)
- @Element(data = true, required = false)
- private Calendar lastPing;
-
- @Column(name = "port", nullable = true)
- @Element(data = true, required = false)
- private int port;
-
- @Column(name = "protocol", nullable = true)
- @Element(data = true, required = false)
- private String protocol;
-
- @Column(name = "webapp", nullable = true)
- @Element(data = true, required = false)
- private String webapp;
-
- @Column(name = "login", nullable = true)
- @Element(data = true, required = false)
- private String user;
-
- @Column(name = "pass", nullable = true)
- @Element(data = true, required = false)
- private String pass;
-
- @Column(name = "active", nullable = false)
- @Element(data = true, required = false)
- private boolean active;
-
- @Column(name = "deleted", nullable = false)
- @Element(data = true)
- private boolean deleted = false;
-
- @Override
- public Long getId() {
- return id;
- }
-
- @Override
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getAddress() {
- return address;
- }
-
- public void setAddress(String address) {
- this.address = address;
- }
-
- public boolean isDeleted() {
- return deleted;
- }
-
- public void setDeleted(boolean deleted) {
- this.deleted = deleted;
- }
-
- public Date getInserted() {
- return inserted;
- }
-
- public void setInserted(Date inserted) {
- this.inserted = inserted;
- }
-
- public Date getUpdated() {
- return updated;
- }
-
- public void setUpdated(Date updated) {
- this.updated = updated;
- }
-
- public User getInsertedby() {
- return insertedby;
- }
-
- public void setInsertedby(User insertedby) {
- this.insertedby = insertedby;
- }
-
- public User getUpdatedby() {
- return updatedby;
- }
-
- public void setUpdatedby(User updatedby) {
- this.updatedby = updatedby;
- }
-
- public String getComment() {
- return comment;
- }
-
- public void setComment(String comment) {
- this.comment = comment;
- }
-
- public Calendar getLastPing() {
- return lastPing;
- }
-
- public void setLastPing(Calendar lastPing) {
- this.lastPing = lastPing;
- }
-
- public int getPort() {
- return port;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public String getProtocol() {
- return protocol;
- }
-
- public void setProtocol(String protocol) {
- this.protocol = protocol;
- }
-
- public String getWebapp() {
- return webapp;
- }
-
- public void setWebapp(String webapp) {
- this.webapp = webapp;
- }
-
- public String getUser() {
- return user;
- }
-
- public void setUser(String user) {
- this.user = user;
- }
-
- public String getPass() {
- return pass;
- }
-
- public void setPass(String pass) {
- this.pass = pass;
- }
-
- public void setId(long id) {
- this.id = id;
- }
-
- public boolean isActive() {
- return active;
- }
-
- public void setActive(boolean active) {
- this.active = active;
- }
-
- @Override
- public String toString() {
- return "Server [id=" + id + ", name=" + name + ", address=" + address
- + ", port=" + port + ", user=" + user + ", pass=" + pass
- + ", protocol=" + protocol
- + ", active=" + active + ", webapp=" + webapp + ", deleted="
- + deleted + "]";
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((address == null) ? 0 : address.hashCode());
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- Server other = (Server) obj;
- if (address == null) {
- if (other.address != null)
- return false;
- } else if (!address.equals(other.address))
- return false;
- if (id == null) {
- if (other.id != null)
- return false;
- } else if (!id.equals(other.id))
- return false;
- return true;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.entity.server;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+ @NamedQuery(name = "getAllServers", query = "SELECT s FROM Server s WHERE s.deleted = false ORDER BY s.id"),
+ @NamedQuery(name = "getServerCount", query = "SELECT COUNT(s) FROM Server s WHERE s.deleted = false"),
+ @NamedQuery(name = "getServerById", query = "SELECT s FROM Server s LEFT JOIN FETCH s.insertedby LEFT JOIN FETCH s.updatedby WHERE s.deleted = false AND s.id = :id"),
+ @NamedQuery(name = "getServerByName", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.name LIKE :name"),
+ @NamedQuery(name = "getServerByAddress", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.address LIKE :address"),
+ @NamedQuery(name = "getServersWithNoUsers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN (SELECT u.server.id FROM User u where u.server.id IS NOT NULL)"),
+ @NamedQuery(name = "getServerWithMinimumUsers", query = "SELECT s.id, COUNT(u) AS cnt FROM User u JOIN u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt"),
+ @NamedQuery(name = "getActiveServers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.active = true") //
+})
+@Table(name = "server")
+@Root
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Server implements IDataProviderEntity {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ @Element(data = true)
+ private Long id;
+
+ @Column(name = "name")
+ @Element(data = true)
+ private String name;
+
+ @Column(name = "address")
+ @Element(data = true)
+ private String address;
+
+ @Column(name = "inserted")
+ public Date inserted;
+
+ @Column(name = "updated")
+ public Date updated;
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "insertedby_id", updatable = true, insertable = true)
+ @ForeignKey(enabled = true)
+ public User insertedby;
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "updatedby_id", updatable = true, insertable = true)
+ @ForeignKey(enabled = true)
+ public User updatedby;
+
+ @Lob
+ @Column(name = "comment", length = 2048)
+ @Element(data = true, required = false)
+ private String comment;
+
+ @Column(name = "last_ping", nullable = true)
+ @Element(data = true, required = false)
+ private Calendar lastPing;
+
+ @Column(name = "port", nullable = true)
+ @Element(data = true, required = false)
+ private int port;
+
+ @Column(name = "protocol", nullable = true)
+ @Element(data = true, required = false)
+ private String protocol;
+
+ @Column(name = "webapp", nullable = true)
+ @Element(data = true, required = false)
+ private String webapp;
+
+ @Column(name = "login", nullable = true)
+ @Element(data = true, required = false)
+ private String user;
+
+ @Column(name = "pass", nullable = true)
+ @Element(data = true, required = false)
+ private String pass;
+
+ @Column(name = "active", nullable = false)
+ @Element(data = true, required = false)
+ private boolean active;
+
+ @Column(name = "deleted", nullable = false)
+ @Element(data = true)
+ private boolean deleted = false;
+
+ @Override
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public boolean isDeleted() {
+ return deleted;
+ }
+
+ public void setDeleted(boolean deleted) {
+ this.deleted = deleted;
+ }
+
+ public Date getInserted() {
+ return inserted;
+ }
+
+ public void setInserted(Date inserted) {
+ this.inserted = inserted;
+ }
+
+ public Date getUpdated() {
+ return updated;
+ }
+
+ public void setUpdated(Date updated) {
+ this.updated = updated;
+ }
+
+ public User getInsertedby() {
+ return insertedby;
+ }
+
+ public void setInsertedby(User insertedby) {
+ this.insertedby = insertedby;
+ }
+
+ public User getUpdatedby() {
+ return updatedby;
+ }
+
+ public void setUpdatedby(User updatedby) {
+ this.updatedby = updatedby;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ public Calendar getLastPing() {
+ return lastPing;
+ }
+
+ public void setLastPing(Calendar lastPing) {
+ this.lastPing = lastPing;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public String getProtocol() {
+ return protocol;
+ }
+
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
+ public String getWebapp() {
+ return webapp;
+ }
+
+ public void setWebapp(String webapp) {
+ this.webapp = webapp;
+ }
+
+ public String getUser() {
+ return user;
+ }
+
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ public String getPass() {
+ return pass;
+ }
+
+ public void setPass(String pass) {
+ this.pass = pass;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public boolean isActive() {
+ return active;
+ }
+
+ public void setActive(boolean active) {
+ this.active = active;
+ }
+
+ @Override
+ public String toString() {
+ return "Server [id=" + id + ", name=" + name + ", address=" + address
+ + ", port=" + port + ", user=" + user + ", pass=" + pass
+ + ", protocol=" + protocol
+ + ", active=" + active + ", webapp=" + webapp + ", deleted="
+ + deleted + "]";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((address == null) ? 0 : address.hashCode());
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Server other = (Server) obj;
+ if (address == null) {
+ if (other.address != null)
+ return false;
+ } else if (!address.equals(other.address))
+ return false;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ return true;
+ }
+}
[21/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/tests/BaseURLLoadTest.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/tests/BaseURLLoadTest.lzx b/openmeetings-flash/src/main/swf/networkTesting/tests/BaseURLLoadTest.lzx
index 4282969..a0e7eda 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/tests/BaseURLLoadTest.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/tests/BaseURLLoadTest.lzx
@@ -1,146 +1,146 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="BaseURLLoadTest" extends="NetworkTest">
-
- <switch>
- <when property="$as3">
- <passthrough>
- import flash.events.*;
- import flash.net.*;
- import flash.utils.*;
- </passthrough>
- </when>
- </switch>
-
- <attribute name="testsCount" type="number" value="0" />
- <attribute name="testTypeParameter" type="string" value="null" />
- <attribute name="verbose" type="boolean" value="true" />
-
- <attribute name="startTime" type="number" value="0" />
- <attribute name="wholeTime" type="number" value="0" />
- <attribute name="maxTime" type="number" value="0" />
- <attribute name="minTime" type="number" value="999999" />
- <attribute name="finishedTestsCount" type="number" value="0" />
- <attribute name="successfulTestsCount" type="number" value="0" />
-
- <attribute name="hostUrl" type="string" value="" />
- <attribute name="loaderInited" type="boolean" value="false" />
- <attribute name="request" value="null" />
- <attribute name="loader" value="null" />
-
- <method name="initLoader">
- hostUrl = getBaseUrl() + "services/networktest?type=" + testTypeParameter;
- request = new URLRequest(hostUrl);
-
- loader = new URLLoader();
- loader.addEventListener(Event.COMPLETE, this.onComplete);
- loader.addEventListener(IOErrorEvent.IO_ERROR, this.onError);
- loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onError);
-
- loaderInited = true;
- </method>
-
- <method name="start">
- if (!loaderInited) {
- this.initLoader();
- }
- finishedTestsCount = 0;
- successfulTestsCount = 0;
- wholeTime = 0;
- maxTime = 0;
- minTime = 999999;
-
- this.log(lbl('report.start') + " " + hostUrl);
- startTime = getTimer();
- loader.load(request);
- </method>
-
- <method name="forcedStop">
- loader.close();
- this.log("stopped");
- </method>
-
- <method name="onComplete" args="e">
- <![CDATA[
- var endTime = getTimer();
- var pingTime = endTime - startTime;
- wholeTime += pingTime;
- if (pingTime > maxTime) {
- maxTime = pingTime;
- }
- if (pingTime < minTime) {
- minTime = pingTime;
- }
-
- if (verbose) {
- this.log(lbl('ping.load') + " = " + pingTime + " " + lbl('ms'));
- }
-
- finishedTestsCount++;
- successfulTestsCount++;
- if (finishedTestsCount < testsCount && running) {
- startTime = getTimer();
- loader.load(request);
- } else {
- this.report();
- }
- ]]>
- </method>
-
- <method name="onError" args="e">
- <![CDATA[
- if (verbose) {
- this.log("Error - " + e);
- }
-
- finishedTestsCount++;
- if (finishedTestsCount < testsCount && running) {
- startTime = getTimer();
- loader.load(request);
- } else {
- this.report();
- }
- ]]>
- </method>
-
- <method name="report">
- var report = lbl('report') + ":";
- if (successfulTestsCount > 0) {
- report += "\n" + this.generateReport();
- } else {
- report += " " + lbl('report.con.err');
- }
- this.log(report);
-
- if (successfulTestsCount > 0) {
- this.setPassed();
- } else {
- this.setFailed();
- }
- </method>
-
- <method name="generateReport" />
-
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="BaseURLLoadTest" extends="NetworkTest">
+
+ <switch>
+ <when property="$as3">
+ <passthrough>
+ import flash.events.*;
+ import flash.net.*;
+ import flash.utils.*;
+ </passthrough>
+ </when>
+ </switch>
+
+ <attribute name="testsCount" type="number" value="0" />
+ <attribute name="testTypeParameter" type="string" value="null" />
+ <attribute name="verbose" type="boolean" value="true" />
+
+ <attribute name="startTime" type="number" value="0" />
+ <attribute name="wholeTime" type="number" value="0" />
+ <attribute name="maxTime" type="number" value="0" />
+ <attribute name="minTime" type="number" value="999999" />
+ <attribute name="finishedTestsCount" type="number" value="0" />
+ <attribute name="successfulTestsCount" type="number" value="0" />
+
+ <attribute name="hostUrl" type="string" value="" />
+ <attribute name="loaderInited" type="boolean" value="false" />
+ <attribute name="request" value="null" />
+ <attribute name="loader" value="null" />
+
+ <method name="initLoader">
+ hostUrl = getBaseUrl() + "services/networktest?type=" + testTypeParameter;
+ request = new URLRequest(hostUrl);
+
+ loader = new URLLoader();
+ loader.addEventListener(Event.COMPLETE, this.onComplete);
+ loader.addEventListener(IOErrorEvent.IO_ERROR, this.onError);
+ loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onError);
+
+ loaderInited = true;
+ </method>
+
+ <method name="start">
+ if (!loaderInited) {
+ this.initLoader();
+ }
+ finishedTestsCount = 0;
+ successfulTestsCount = 0;
+ wholeTime = 0;
+ maxTime = 0;
+ minTime = 999999;
+
+ this.log(lbl('report.start') + " " + hostUrl);
+ startTime = getTimer();
+ loader.load(request);
+ </method>
+
+ <method name="forcedStop">
+ loader.close();
+ this.log("stopped");
+ </method>
+
+ <method name="onComplete" args="e">
+ <![CDATA[
+ var endTime = getTimer();
+ var pingTime = endTime - startTime;
+ wholeTime += pingTime;
+ if (pingTime > maxTime) {
+ maxTime = pingTime;
+ }
+ if (pingTime < minTime) {
+ minTime = pingTime;
+ }
+
+ if (verbose) {
+ this.log(lbl('ping.load') + " = " + pingTime + " " + lbl('ms'));
+ }
+
+ finishedTestsCount++;
+ successfulTestsCount++;
+ if (finishedTestsCount < testsCount && running) {
+ startTime = getTimer();
+ loader.load(request);
+ } else {
+ this.report();
+ }
+ ]]>
+ </method>
+
+ <method name="onError" args="e">
+ <![CDATA[
+ if (verbose) {
+ this.log("Error - " + e);
+ }
+
+ finishedTestsCount++;
+ if (finishedTestsCount < testsCount && running) {
+ startTime = getTimer();
+ loader.load(request);
+ } else {
+ this.report();
+ }
+ ]]>
+ </method>
+
+ <method name="report">
+ var report = lbl('report') + ":";
+ if (successfulTestsCount > 0) {
+ report += "\n" + this.generateReport();
+ } else {
+ report += " " + lbl('report.con.err');
+ }
+ this.log(report);
+
+ if (successfulTestsCount > 0) {
+ this.setPassed();
+ } else {
+ this.setFailed();
+ }
+ </method>
+
+ <method name="generateReport" />
+
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/tests/DownloadSpeedTest.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/tests/DownloadSpeedTest.lzx b/openmeetings-flash/src/main/swf/networkTesting/tests/DownloadSpeedTest.lzx
index 5b195e7..dd8a083 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/tests/DownloadSpeedTest.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/tests/DownloadSpeedTest.lzx
@@ -1,50 +1,50 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="DownloadSpeedTest" extends="BaseURLLoadTest">
-
- <handler name="oninit">
- this.setAttribute("testsCount", 1);
- this.setAttribute("testName", lbl('dwn'));
- this.setAttribute("testTypeParameter", "download");
- this.setAttribute("verbose", false);
- this.setAttribute("resultText", true);
- </handler>
-
- <method name="generateReport">
- var mBytes = loader.bytesTotal/(1024*1024);
- var timeSec = wholeTime/1000;
- var speed = mBytes/timeSec;
-
- var report = lbl('dwn.bytes') + ": " + mBytes + " " + lbl('mb') + "\n";
- report += lbl('dwn.time') + ": " + timeSec + " " + lbl('sec') + "\n";
- report += lbl('dwn.speed') + ": " + speed + " " + lbl('mb') + "/" + lbl('sec') + "\n";
-
- resultLabel.setAttribute("text", "");
- resultLabel.addFormat("%.2f\n%s", speed, lbl('mb') + "/" + lbl('sec'));
-
- return report;
- </method>
-
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="DownloadSpeedTest" extends="BaseURLLoadTest">
+
+ <handler name="oninit">
+ this.setAttribute("testsCount", 1);
+ this.setAttribute("testName", lbl('dwn'));
+ this.setAttribute("testTypeParameter", "download");
+ this.setAttribute("verbose", false);
+ this.setAttribute("resultText", true);
+ </handler>
+
+ <method name="generateReport">
+ var mBytes = loader.bytesTotal/(1024*1024);
+ var timeSec = wholeTime/1000;
+ var speed = mBytes/timeSec;
+
+ var report = lbl('dwn.bytes') + ": " + mBytes + " " + lbl('mb') + "\n";
+ report += lbl('dwn.time') + ": " + timeSec + " " + lbl('sec') + "\n";
+ report += lbl('dwn.speed') + ": " + speed + " " + lbl('mb') + "/" + lbl('sec') + "\n";
+
+ resultLabel.setAttribute("text", "");
+ resultLabel.addFormat("%.2f\n%s", speed, lbl('mb') + "/" + lbl('sec'));
+
+ return report;
+ </method>
+
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/tests/JitterTest.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/tests/JitterTest.lzx b/openmeetings-flash/src/main/swf/networkTesting/tests/JitterTest.lzx
index e4b2f3d..2bf8d3e 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/tests/JitterTest.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/tests/JitterTest.lzx
@@ -1,57 +1,57 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="JitterTest" extends="BaseURLLoadTest">
-
- <handler name="oninit">
- this.setAttribute("testsCount", 100);
- this.setAttribute("testName", lbl('jitter'));
- this.setAttribute("testTypeParameter", "jitter");
- this.setAttribute("verbose", false);
- this.setAttribute("resultText", true);
- </handler>
-
- <method name="generateReport">
- <![CDATA[
- var averageTime = wholeTime / successfulTestsCount;
- var jitterMax = maxTime - averageTime;
- var jitterMin = minTime - averageTime;
- var report = lbl('jitter.avg') + ": " + averageTime + " " + lbl('ms') + "\n";
- report += lbl('jitter.min') + ": " + minTime + " " + lbl('ms') + "\n";
- report += lbl('jitter.max') + ": " + maxTime + " " + lbl('ms') + "\n";
- report += lbl('jitter') + ": " + jitterMax + " " + lbl('ms') + "; " + jitterMin + " " + lbl('ms') + " \n";
-
- var max = -jitterMin;
- if (jitterMax > max) {
- max = jitterMax;
- }
-
- resultLabel.setAttribute("text", "");
- resultLabel.addFormat("%.0d\n%s", max, lbl('ms'));
-
- return report;
- ]]>
- </method>
-
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="JitterTest" extends="BaseURLLoadTest">
+
+ <handler name="oninit">
+ this.setAttribute("testsCount", 100);
+ this.setAttribute("testName", lbl('jitter'));
+ this.setAttribute("testTypeParameter", "jitter");
+ this.setAttribute("verbose", false);
+ this.setAttribute("resultText", true);
+ </handler>
+
+ <method name="generateReport">
+ <![CDATA[
+ var averageTime = wholeTime / successfulTestsCount;
+ var jitterMax = maxTime - averageTime;
+ var jitterMin = minTime - averageTime;
+ var report = lbl('jitter.avg') + ": " + averageTime + " " + lbl('ms') + "\n";
+ report += lbl('jitter.min') + ": " + minTime + " " + lbl('ms') + "\n";
+ report += lbl('jitter.max') + ": " + maxTime + " " + lbl('ms') + "\n";
+ report += lbl('jitter') + ": " + jitterMax + " " + lbl('ms') + "; " + jitterMin + " " + lbl('ms') + " \n";
+
+ var max = -jitterMin;
+ if (jitterMax > max) {
+ max = jitterMax;
+ }
+
+ resultLabel.setAttribute("text", "");
+ resultLabel.addFormat("%.0d\n%s", max, lbl('ms'));
+
+ return report;
+ ]]>
+ </method>
+
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/tests/NetworkTest.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/tests/NetworkTest.lzx b/openmeetings-flash/src/main/swf/networkTesting/tests/NetworkTest.lzx
index 811a3cb..e837748 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/tests/NetworkTest.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/tests/NetworkTest.lzx
@@ -1,128 +1,128 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="NetworkTest" extends="view">
-
- <attribute name="testName" type="string" value="null" />
- <attribute name="protocol" type="string" value="null" />
- <attribute name="host" type="string" value="null" />
- <attribute name="port" type="number" value="null" />
- <attribute name="running" type="boolean" value="false" />
- <attribute name="allTests" type="boolean" value="false" />
- <attribute name="resultText" type="boolean" value="false" />
-
- <method name="start" />
- <method name="forcedStop" />
-
- <method name="startAllTestsMode">
- allTests = true;
- this.setRunning();
- </method>
-
- <view name="picture">
- <view name="rsc" resource="notrun" width="113" height="113" />
- </view>
- <text name="nameLabel" text="${parent.testName}" x="${(parent.picture.rsc.width - this.width)/2}"
- y="$once{parent.picture.rsc.height}"
- />
- <text name="resultLabel" visible="false" fgcolor="white" align="center" fontsize="16" />
-
- <handler name="onclick">
- if (running) {
- this.setStopped();
- } else {
- allTests = false;
- this.setRunning();
- }
- </handler>
-
- <method name="handleAllTestsMode">
- if (allTests) {
- canvas.testsView.testAll();
- }
- </method>
-
- <method name="setPassed">
- if (running) {
- running=false;
- if (resultText) {
- picture.rsc.setAttribute("resource", "passed_result");
- var x = (picture.rsc.width - resultLabel.width)/2;
- var y = (picture.rsc.height - resultLabel.height)/2;
- resultLabel.setAttribute("x", x);
- resultLabel.setAttribute("y", y);
- resultLabel.setAttribute("visible", true);
- } else {
- picture.rsc.setAttribute("resource", "passed");
- }
- canvas.setAttribute("busy", false);
- this.handleAllTestsMode();
- }
- </method>
-
- <method name="setFailed">
- if (running) {
- running=false;
- picture.rsc.setAttribute("resource", "failed");
- canvas.setAttribute("busy", false);
- this.handleAllTestsMode();
- }
- </method>
-
- <method name="setRunning">
- if (canvas.busy) {
- return;
- }
- canvas.setAttribute("busy", true);
- this.start();
- running=true;
- resultLabel.setAttribute("visible", false);
- picture.rsc.setAttribute("resource", "running");
- picture.rsc.play();
- </method>
-
- <method name="setStopped">
- this.forcedStop();
- running=false;
- picture.rsc.setAttribute("resource", "notrun");
- canvas.setAttribute("busy", false);
- this.handleAllTestsMode();
- </method>
-
- <method name="log" args="message">
- var str = testName + ": " + message + "\n";
- canvas.log += str;
- if ($debug) Debug.write(str);
- </method>
-
- <method name="getBaseUrl">
- var hostUrl = protocol + "://" + host + ":" + port + canvas.uriContext;
- return hostUrl + (hostUrl.slice(-1) == '/' ? '' : '/');
- </method>
-
- <method name="lbl" args="key">
- return canvas.lbl(key);
- </method>
-
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="NetworkTest" extends="view">
+
+ <attribute name="testName" type="string" value="null" />
+ <attribute name="protocol" type="string" value="null" />
+ <attribute name="host" type="string" value="null" />
+ <attribute name="port" type="number" value="null" />
+ <attribute name="running" type="boolean" value="false" />
+ <attribute name="allTests" type="boolean" value="false" />
+ <attribute name="resultText" type="boolean" value="false" />
+
+ <method name="start" />
+ <method name="forcedStop" />
+
+ <method name="startAllTestsMode">
+ allTests = true;
+ this.setRunning();
+ </method>
+
+ <view name="picture">
+ <view name="rsc" resource="notrun" width="113" height="113" />
+ </view>
+ <text name="nameLabel" text="${parent.testName}" x="${(parent.picture.rsc.width - this.width)/2}"
+ y="$once{parent.picture.rsc.height}"
+ />
+ <text name="resultLabel" visible="false" fgcolor="white" align="center" fontsize="16" />
+
+ <handler name="onclick">
+ if (running) {
+ this.setStopped();
+ } else {
+ allTests = false;
+ this.setRunning();
+ }
+ </handler>
+
+ <method name="handleAllTestsMode">
+ if (allTests) {
+ canvas.testsView.testAll();
+ }
+ </method>
+
+ <method name="setPassed">
+ if (running) {
+ running=false;
+ if (resultText) {
+ picture.rsc.setAttribute("resource", "passed_result");
+ var x = (picture.rsc.width - resultLabel.width)/2;
+ var y = (picture.rsc.height - resultLabel.height)/2;
+ resultLabel.setAttribute("x", x);
+ resultLabel.setAttribute("y", y);
+ resultLabel.setAttribute("visible", true);
+ } else {
+ picture.rsc.setAttribute("resource", "passed");
+ }
+ canvas.setAttribute("busy", false);
+ this.handleAllTestsMode();
+ }
+ </method>
+
+ <method name="setFailed">
+ if (running) {
+ running=false;
+ picture.rsc.setAttribute("resource", "failed");
+ canvas.setAttribute("busy", false);
+ this.handleAllTestsMode();
+ }
+ </method>
+
+ <method name="setRunning">
+ if (canvas.busy) {
+ return;
+ }
+ canvas.setAttribute("busy", true);
+ this.start();
+ running=true;
+ resultLabel.setAttribute("visible", false);
+ picture.rsc.setAttribute("resource", "running");
+ picture.rsc.play();
+ </method>
+
+ <method name="setStopped">
+ this.forcedStop();
+ running=false;
+ picture.rsc.setAttribute("resource", "notrun");
+ canvas.setAttribute("busy", false);
+ this.handleAllTestsMode();
+ </method>
+
+ <method name="log" args="message">
+ var str = testName + ": " + message + "\n";
+ canvas.log += str;
+ if ($debug) Debug.write(str);
+ </method>
+
+ <method name="getBaseUrl">
+ var hostUrl = protocol + "://" + host + ":" + port + canvas.uriContext;
+ return hostUrl + (hostUrl.slice(-1) == '/' ? '' : '/');
+ </method>
+
+ <method name="lbl" args="key">
+ return canvas.lbl(key);
+ </method>
+
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/tests/PingTest.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/tests/PingTest.lzx b/openmeetings-flash/src/main/swf/networkTesting/tests/PingTest.lzx
index 6217cc3..61d484b 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/tests/PingTest.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/tests/PingTest.lzx
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="PingTest" extends="BaseURLLoadTest">
-
- <handler name="oninit">
- this.setAttribute("testsCount", 10);
- this.setAttribute("testName", lbl('ping'));
- this.setAttribute("testTypeParameter", "ping");
- </handler>
-
- <method name="generateReport">
- var averageTime = wholeTime / successfulTestsCount;
- var packetsLost = testsCount - successfulTestsCount;
- var report = lbl('ping.avg') + ": " + averageTime + " " + lbl('ms') + "\n";
- report += lbl('ping.rcv') + ": " + successfulTestsCount + "\n";
- report += lbl('ping.lost') + ": " + packetsLost + "\n";
-
- return report;
- </method>
-
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="PingTest" extends="BaseURLLoadTest">
+
+ <handler name="oninit">
+ this.setAttribute("testsCount", 10);
+ this.setAttribute("testName", lbl('ping'));
+ this.setAttribute("testTypeParameter", "ping");
+ </handler>
+
+ <method name="generateReport">
+ var averageTime = wholeTime / successfulTestsCount;
+ var packetsLost = testsCount - successfulTestsCount;
+ var report = lbl('ping.avg') + ": " + averageTime + " " + lbl('ms') + "\n";
+ report += lbl('ping.rcv') + ": " + successfulTestsCount + "\n";
+ report += lbl('ping.lost') + ": " + packetsLost + "\n";
+
+ return report;
+ </method>
+
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/tests/PortAvailabilityTest.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/tests/PortAvailabilityTest.lzx b/openmeetings-flash/src/main/swf/networkTesting/tests/PortAvailabilityTest.lzx
index 65e1d95..ea60c7e 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/tests/PortAvailabilityTest.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/tests/PortAvailabilityTest.lzx
@@ -1,90 +1,90 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="PortAvailabilityTest" extends="NetworkTest">
-
- <switch>
- <when property="$as3">
- <passthrough>
- import flash.events.*;
- import flash.net.*;
- import flash.system.*;
- </passthrough>
- </when>
- </switch>
-
- <rtmpConnection name="rtmp" debug="true" />
-
- <handler name="oninit">
- this.setAttribute("testName", lbl('port'));
- </handler>
-
- <method name="start">
- var hostUrl = protocol + "://" + host + ":" + port + canvas.rtmpUriPath;
- rtmp.setAttribute("src", hostUrl);
- this.log(": " + lbl('report.start') + " " + hostUrl);
-
- canvas.publicSID = "networktest";
- rtmp.connect();
- </method>
-
- <method name="forcedStop">
- this.log(lbl('port.stopped'));
- disconnect();
- </method>
-
- <method name="disconnect">
- rtmp._nc.close();
- rtmp.setAttribute('status', 'disconnected');
- rtmp.setAttribute('stage', 0);
- </method>
-
- <handler name="onconnect" reference="rtmp">
- if (running) {
- this.log(lbl('port.avail') + "\n");
- this.setPassed();
- disconnect();
- }
- </handler>
-
- <handler name="onerror" args="e" reference="rtmp">
- if (running) {
- this.log(lbl('report.con.err') + " - " + e + "\n");
- this.setFailed();
- }
- </handler>
-
- <handler name="onstatus" args="e" reference="rtmp">
- if (running) {
- switch(e) {
- case "timed out":
- case "connection failed":
- this.setFailed();
- break;
- }
- if($debug) Debug.write(testName + ": RTMP connect status - ", e);
- }
- </handler>
-
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="PortAvailabilityTest" extends="NetworkTest">
+
+ <switch>
+ <when property="$as3">
+ <passthrough>
+ import flash.events.*;
+ import flash.net.*;
+ import flash.system.*;
+ </passthrough>
+ </when>
+ </switch>
+
+ <rtmpConnection name="rtmp" debug="true" />
+
+ <handler name="oninit">
+ this.setAttribute("testName", lbl('port'));
+ </handler>
+
+ <method name="start">
+ var hostUrl = protocol + "://" + host + ":" + port + canvas.rtmpUriPath;
+ rtmp.setAttribute("src", hostUrl);
+ this.log(": " + lbl('report.start') + " " + hostUrl);
+
+ canvas.publicSID = "networktest";
+ rtmp.connect();
+ </method>
+
+ <method name="forcedStop">
+ this.log(lbl('port.stopped'));
+ disconnect();
+ </method>
+
+ <method name="disconnect">
+ rtmp._nc.close();
+ rtmp.setAttribute('status', 'disconnected');
+ rtmp.setAttribute('stage', 0);
+ </method>
+
+ <handler name="onconnect" reference="rtmp">
+ if (running) {
+ this.log(lbl('port.avail') + "\n");
+ this.setPassed();
+ disconnect();
+ }
+ </handler>
+
+ <handler name="onerror" args="e" reference="rtmp">
+ if (running) {
+ this.log(lbl('report.con.err') + " - " + e + "\n");
+ this.setFailed();
+ }
+ </handler>
+
+ <handler name="onstatus" args="e" reference="rtmp">
+ if (running) {
+ switch(e) {
+ case "timed out":
+ case "connection failed":
+ this.setFailed();
+ break;
+ }
+ if($debug) Debug.write(testName + ": RTMP connect status - ", e);
+ }
+ </handler>
+
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/tests/UploadSpeedTest.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/tests/UploadSpeedTest.lzx b/openmeetings-flash/src/main/swf/networkTesting/tests/UploadSpeedTest.lzx
index 5edca71..92ea5bf 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/tests/UploadSpeedTest.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/tests/UploadSpeedTest.lzx
@@ -1,124 +1,124 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="UploadSpeedTest" extends="NetworkTest">
-
- <switch>
- <when property="$as3">
- <passthrough>
- import flash.events.*;
- import flash.net.*;
- import flash.utils.*;
- </passthrough>
- </when>
- </switch>
-
- <attribute name="startTime" type="number" value="0" />
-
- <attribute name="hostUrl" type="string" value="" />
- <attribute name="loaderInited" type="boolean" value="false" />
- <attribute name="vars" value="null" />
- <attribute name="request" value="null" />
- <attribute name="loader" value="null" />
-
- <handler name="oninit">
- this.setAttribute("testName", lbl('upl'));
- this.setAttribute("resultText", true);
- </handler>
-
- <method name="initLoader">
- hostUrl = getBaseUrl() + "services/networktest";
- loader = new RestCall({
- url: hostUrl
- , method: URLRequestMethod.POST
- , dataFormat: URLLoaderDataFormat.BINARY
- , contentType: "multipart/form-data; charset=utf-8; boundary=" + UploadPostHelper.getBoundary()
- , errorCallback: onError
- , successCallback: onComplete
- });
- vars = UploadPostHelper.getPostData('aaa', getData());
- if ($debug) Debug.write("initLoader:: ");//, vars
- loaderInited = true;
- </method>
-
- <method name="start">
- if ($debug) Debug.write("start:: ", request);
- if (!loaderInited) {
- this.initLoader();
- }
-
- if ($debug) Debug.write("going to start:: ", loader);
- this.log(lbl('report.start') + " " + hostUrl);
- startTime = getTimer();
- request = loader.load(vars);
- if ($debug) Debug.write("load:: ", request);
- </method>
-
- <method name="forcedStop">
- loader.close();
- this.log("stopped");
- </method>
-
- <method name="onComplete" args="e">
- if ($debug) Debug.write("onComplete:: ", e);
- if (running) {
- var endTime = getTimer();
- var loadTime = endTime - startTime;
- var loadTimeSec = loadTime/1000;
- var mBytes = request.data.length/(1024*1024);
- var speed = mBytes / loadTimeSec;
-
- var report = "report:\n";
- report += lbl('upl.bytes') + ": " + mBytes + " " + lbl('mb') + "\n";
- report += lbl('upl.time') + ": " + loadTimeSec + " " + lbl('sec') + "\n";
- report += lbl('upl.speed') + ": " + speed + " " + lbl('mb') + "/" + lbl('sec') + "\n";
-
- resultLabel.setAttribute("text", "");
- resultLabel.addFormat("%.2f\n%s", speed, lbl('mb') + "/" + lbl('sec'));
- this.log(report);
- this.setPassed();
- }
- </method>
-
- <method name="onError" args="e">
- if ($debug) Debug.write("onError:: ", e);
- if (running) {
- this.log(lbl('report.error') + " - " + e);
- this.setFailed();
- }
- </method>
-
- <!-- returns a 1 Mb string-->
- <method name="getData">
- <![CDATA[
- var result:ByteArray = new ByteArray();
- for (var i = 0; i < 64 * 16384; ++i) {
- result.writeByte(i % 256);
- }
- result.position = 0;
- return result;
- ]]>
- </method>
-
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="UploadSpeedTest" extends="NetworkTest">
+
+ <switch>
+ <when property="$as3">
+ <passthrough>
+ import flash.events.*;
+ import flash.net.*;
+ import flash.utils.*;
+ </passthrough>
+ </when>
+ </switch>
+
+ <attribute name="startTime" type="number" value="0" />
+
+ <attribute name="hostUrl" type="string" value="" />
+ <attribute name="loaderInited" type="boolean" value="false" />
+ <attribute name="vars" value="null" />
+ <attribute name="request" value="null" />
+ <attribute name="loader" value="null" />
+
+ <handler name="oninit">
+ this.setAttribute("testName", lbl('upl'));
+ this.setAttribute("resultText", true);
+ </handler>
+
+ <method name="initLoader">
+ hostUrl = getBaseUrl() + "services/networktest";
+ loader = new RestCall({
+ url: hostUrl
+ , method: URLRequestMethod.POST
+ , dataFormat: URLLoaderDataFormat.BINARY
+ , contentType: "multipart/form-data; charset=utf-8; boundary=" + UploadPostHelper.getBoundary()
+ , errorCallback: onError
+ , successCallback: onComplete
+ });
+ vars = UploadPostHelper.getPostData('aaa', getData());
+ if ($debug) Debug.write("initLoader:: ");//, vars
+ loaderInited = true;
+ </method>
+
+ <method name="start">
+ if ($debug) Debug.write("start:: ", request);
+ if (!loaderInited) {
+ this.initLoader();
+ }
+
+ if ($debug) Debug.write("going to start:: ", loader);
+ this.log(lbl('report.start') + " " + hostUrl);
+ startTime = getTimer();
+ request = loader.load(vars);
+ if ($debug) Debug.write("load:: ", request);
+ </method>
+
+ <method name="forcedStop">
+ loader.close();
+ this.log("stopped");
+ </method>
+
+ <method name="onComplete" args="e">
+ if ($debug) Debug.write("onComplete:: ", e);
+ if (running) {
+ var endTime = getTimer();
+ var loadTime = endTime - startTime;
+ var loadTimeSec = loadTime/1000;
+ var mBytes = request.data.length/(1024*1024);
+ var speed = mBytes / loadTimeSec;
+
+ var report = "report:\n";
+ report += lbl('upl.bytes') + ": " + mBytes + " " + lbl('mb') + "\n";
+ report += lbl('upl.time') + ": " + loadTimeSec + " " + lbl('sec') + "\n";
+ report += lbl('upl.speed') + ": " + speed + " " + lbl('mb') + "/" + lbl('sec') + "\n";
+
+ resultLabel.setAttribute("text", "");
+ resultLabel.addFormat("%.2f\n%s", speed, lbl('mb') + "/" + lbl('sec'));
+ this.log(report);
+ this.setPassed();
+ }
+ </method>
+
+ <method name="onError" args="e">
+ if ($debug) Debug.write("onError:: ", e);
+ if (running) {
+ this.log(lbl('report.error') + " - " + e);
+ this.setFailed();
+ }
+ </method>
+
+ <!-- returns a 1 Mb string-->
+ <method name="getData">
+ <![CDATA[
+ var result:ByteArray = new ByteArray();
+ for (var i = 0; i < 64 * 16384; ++i) {
+ result.writeByte(i % 256);
+ }
+ result.position = 0;
+ return result;
+ ]]>
+ </method>
+
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/tests/library.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/tests/library.lzx b/openmeetings-flash/src/main/swf/networkTesting/tests/library.lzx
index 9b8575d..5021b9c 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/tests/library.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/tests/library.lzx
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
- <resource name="failed" src="resources/failed.png" />
- <resource name="notrun" src="resources/notrun.png" />
- <resource name="passed" src="resources/passed.png" />
- <resource name="passed_result" src="resources/passed_result.png" />
- <resource name="running" src="resources/running.swf" />
-
- <include href="BaseURLLoadTest.lzx" />
- <include href="DownloadSpeedTest.lzx" />
- <include href="JitterTest.lzx" />
- <include href="NetworkTest.lzx" />
- <include href="PingTest.lzx" />
- <include href="PortAvailabilityTest.lzx" />
- <include href="UploadSpeedTest.lzx" />
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+ <resource name="failed" src="resources/failed.png" />
+ <resource name="notrun" src="resources/notrun.png" />
+ <resource name="passed" src="resources/passed.png" />
+ <resource name="passed_result" src="resources/passed_result.png" />
+ <resource name="running" src="resources/running.swf" />
+
+ <include href="BaseURLLoadTest.lzx" />
+ <include href="DownloadSpeedTest.lzx" />
+ <include href="JitterTest.lzx" />
+ <include href="NetworkTest.lzx" />
+ <include href="PingTest.lzx" />
+ <include href="PortAvailabilityTest.lzx" />
+ <include href="UploadSpeedTest.lzx" />
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/testsView.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/testsView.lzx b/openmeetings-flash/src/main/swf/networkTesting/testsView.lzx
index 9af6811..f4ac847 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/testsView.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/testsView.lzx
@@ -1,105 +1,105 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<include href="../base/remote/rtmpConnection.lzx" />
-<include href="tests/" />
-<resource name="log" src="resources/edit-copy.png" />
-
-<class name="TestsView" extends="view">
-
- <attribute name="offset" type="number" value="20" />
- <attribute name="smallOffset" type="number" value="5" />
-
- <text name="label"
- text="$once{canvas.lbl('click.play')}"
- x="${parent.offset}"
- y="${parent.offset}"
- />
- <view name="logButton"
- x="${parent.width - this.rsc.width - parent.offset}"
- y="${parent.label.y + (parent.label.height - this.rsc.height)/2}"
- >
- <image name="rsc" resource="log" height="16" width="16"/>
- <handler name="onclick">
- lz.Browser.setClipboard(canvas.log);
- </handler>
- </view>
-
- <text name="logLabel"
- text="$once{canvas.lbl('copy.log')}"
- x="${parent.logButton.x - this.width - parent.smallOffset}"
- y="${parent.label.y}"
- />
-
- <PingTest
- name="pingTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
- x="${parent.offset}"
- y="${parent.label.y + parent.label.height + parent.offset/2}"
- />
- <PortAvailabilityTest
- name="portTest" protocol="${canvas.rtmpProtocol}" host="${canvas.rtmpHost}" port="${canvas.rtmpPort}"
- x="${parent.pingTest.x + parent.pingTest.width + parent.offset}"
- y="${parent.pingTest.y}"
- />
- <JitterTest
- name="jitterTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
- x="${parent.portTest.x + parent.portTest.width + parent.offset}"
- y="${parent.pingTest.y}"
- />
- <DownloadSpeedTest
- name="downloadTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
- x="${parent.jitterTest.x + parent.jitterTest.width + parent.offset}"
- y="${parent.pingTest.y}"
- />
-
- <UploadSpeedTest
- name="uploadTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
- x="${parent.downloadTest.x + parent.downloadTest.width + parent.offset}"
- y="${parent.pingTest.y}"
- />
-
- <attribute name="currentTestNumber" type="number" value="0" />
- <method name="testAll">
- var nextTest;
- if (0 == currentTestNumber) {
- nextTest = pingTest;
- } else if (1 == currentTestNumber) {
- nextTest = portTest;
- } else if (2 == currentTestNumber) {
- nextTest = jitterTest;
- } else if (3 == currentTestNumber) {
- nextTest = downloadTest;
- } else if (4 == currentTestNumber) {
- nextTest = uploadTest;
- } else if (5 == currentTestNumber) {
- nextTest = null;
- }
-
- if (null != nextTest) {
- currentTestNumber++;
- nextTest.startAllTestsMode();
- }
- </method>
-
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<include href="../base/remote/rtmpConnection.lzx" />
+<include href="tests/" />
+<resource name="log" src="resources/edit-copy.png" />
+
+<class name="TestsView" extends="view">
+
+ <attribute name="offset" type="number" value="20" />
+ <attribute name="smallOffset" type="number" value="5" />
+
+ <text name="label"
+ text="$once{canvas.lbl('click.play')}"
+ x="${parent.offset}"
+ y="${parent.offset}"
+ />
+ <view name="logButton"
+ x="${parent.width - this.rsc.width - parent.offset}"
+ y="${parent.label.y + (parent.label.height - this.rsc.height)/2}"
+ >
+ <image name="rsc" resource="log" height="16" width="16"/>
+ <handler name="onclick">
+ lz.Browser.setClipboard(canvas.log);
+ </handler>
+ </view>
+
+ <text name="logLabel"
+ text="$once{canvas.lbl('copy.log')}"
+ x="${parent.logButton.x - this.width - parent.smallOffset}"
+ y="${parent.label.y}"
+ />
+
+ <PingTest
+ name="pingTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
+ x="${parent.offset}"
+ y="${parent.label.y + parent.label.height + parent.offset/2}"
+ />
+ <PortAvailabilityTest
+ name="portTest" protocol="${canvas.rtmpProtocol}" host="${canvas.rtmpHost}" port="${canvas.rtmpPort}"
+ x="${parent.pingTest.x + parent.pingTest.width + parent.offset}"
+ y="${parent.pingTest.y}"
+ />
+ <JitterTest
+ name="jitterTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
+ x="${parent.portTest.x + parent.portTest.width + parent.offset}"
+ y="${parent.pingTest.y}"
+ />
+ <DownloadSpeedTest
+ name="downloadTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
+ x="${parent.jitterTest.x + parent.jitterTest.width + parent.offset}"
+ y="${parent.pingTest.y}"
+ />
+
+ <UploadSpeedTest
+ name="uploadTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
+ x="${parent.downloadTest.x + parent.downloadTest.width + parent.offset}"
+ y="${parent.pingTest.y}"
+ />
+
+ <attribute name="currentTestNumber" type="number" value="0" />
+ <method name="testAll">
+ var nextTest;
+ if (0 == currentTestNumber) {
+ nextTest = pingTest;
+ } else if (1 == currentTestNumber) {
+ nextTest = portTest;
+ } else if (2 == currentTestNumber) {
+ nextTest = jitterTest;
+ } else if (3 == currentTestNumber) {
+ nextTest = downloadTest;
+ } else if (4 == currentTestNumber) {
+ nextTest = uploadTest;
+ } else if (5 == currentTestNumber) {
+ nextTest = null;
+ }
+
+ if (null != nextTest) {
+ currentTestNumber++;
+ nextTest.startAllTestsMode();
+ }
+ </method>
+
+</class>
+
+</library>
[19/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/video/library.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/video/library.lzx b/openmeetings-flash/src/main/swf/video/library.lzx
index ef42828..6862298 100644
--- a/openmeetings-flash/src/main/swf/video/library.lzx
+++ b/openmeetings-flash/src/main/swf/video/library.lzx
@@ -1,70 +1,70 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
- <!-- APL author sebawagner -->
- <resource name="level_meter_rsc" src="resources/level_meter.png" />
- <!-- APL author sebawagner -->
- <resource name="test_setup_record_rsc" src="resources/webstart_record.png" />
- <!-- APL author sebawagner -->
- <resource name="test_setup_play_rsc" src="resources/run.png" />
- <!-- APL author sebawagner -->
- <resource name="test_setup_stop_rsc" src="resources/stop.png" />
- <!-- FamFam Icon Set -->
- <resource name="test_setup_info_rsc" src="resources/information.png" />
- <!-- FamFam Icon Creative Commons -->
- <resource name="warning_icon_popup_devices_rsc" src="resources/error.png" />
-
- <!-- FamFam Icon Creative Commons -->
- <resource name="resyncuser_rsc" src="resources/arrow_refresh_small.png" />
-
- <!-- APL author sebawagner -->
- <resource name="mic_rsc" src="resources/micro.png" />
-
- <!-- APL author sebawagner -->
- <resource name="speaking" src="resources/speaking.png" />
-
- <!-- IconFinder Creative Commons -->
- <resource name="volume" src="resources/volume.png" />
-
- <!-- FamFam Icon Creative Commons -->
- <resource name="mute_btn_rsc">
- <frame src="resources/sound.png" />
- <frame src="resources/sound_mute.png" />
- </resource>
-
- <!-- APL author sebawagner -->
- <resource name="mute_micro_btn_rsc">
- <frame src="resources/mute_micro.png" />
- <frame src="resources/mute_micro_red.png" />
- </resource>
-
- <!-- APL author sebawagner -->
- <resource name="lz_recorder_play" src="resources/webstart_play.png" />
-
- <include href="videoUserProfilePicSWF10.lzx" />
- <include href="editRecordStreamSWF10.lzx" />
- <include href="baseVideoObject.lzx" />
- <include href="videoObjectPlayBroadcast.lzx" />
- <include href="videoObjectTestBroadcast.lzx" />
- <include href="videoObjectPlayTestBroadcast.lzx" />
- <include href="volumeSlider.lzx" />
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+ <!-- APL author sebawagner -->
+ <resource name="level_meter_rsc" src="resources/level_meter.png" />
+ <!-- APL author sebawagner -->
+ <resource name="test_setup_record_rsc" src="resources/webstart_record.png" />
+ <!-- APL author sebawagner -->
+ <resource name="test_setup_play_rsc" src="resources/run.png" />
+ <!-- APL author sebawagner -->
+ <resource name="test_setup_stop_rsc" src="resources/stop.png" />
+ <!-- FamFam Icon Set -->
+ <resource name="test_setup_info_rsc" src="resources/information.png" />
+ <!-- FamFam Icon Creative Commons -->
+ <resource name="warning_icon_popup_devices_rsc" src="resources/error.png" />
+
+ <!-- FamFam Icon Creative Commons -->
+ <resource name="resyncuser_rsc" src="resources/arrow_refresh_small.png" />
+
+ <!-- APL author sebawagner -->
+ <resource name="mic_rsc" src="resources/micro.png" />
+
+ <!-- APL author sebawagner -->
+ <resource name="speaking" src="resources/speaking.png" />
+
+ <!-- IconFinder Creative Commons -->
+ <resource name="volume" src="resources/volume.png" />
+
+ <!-- FamFam Icon Creative Commons -->
+ <resource name="mute_btn_rsc">
+ <frame src="resources/sound.png" />
+ <frame src="resources/sound_mute.png" />
+ </resource>
+
+ <!-- APL author sebawagner -->
+ <resource name="mute_micro_btn_rsc">
+ <frame src="resources/mute_micro.png" />
+ <frame src="resources/mute_micro_red.png" />
+ </resource>
+
+ <!-- APL author sebawagner -->
+ <resource name="lz_recorder_play" src="resources/webstart_play.png" />
+
+ <include href="videoUserProfilePicSWF10.lzx" />
+ <include href="editRecordStreamSWF10.lzx" />
+ <include href="baseVideoObject.lzx" />
+ <include href="videoObjectPlayBroadcast.lzx" />
+ <include href="videoObjectTestBroadcast.lzx" />
+ <include href="videoObjectPlayTestBroadcast.lzx" />
+ <include href="volumeSlider.lzx" />
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/video/videoObjectPlayBroadcast.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/video/videoObjectPlayBroadcast.lzx b/openmeetings-flash/src/main/swf/video/videoObjectPlayBroadcast.lzx
index b21e348..120d57f 100644
--- a/openmeetings-flash/src/main/swf/video/videoObjectPlayBroadcast.lzx
+++ b/openmeetings-flash/src/main/swf/video/videoObjectPlayBroadcast.lzx
@@ -1,81 +1,81 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
- <!--- Contains no microphone or camera Object, this view can only subscribe
- to a video or live-stream -->
- <class name="videoObjectPlayBroadcast" extends="baseVideoObject" isremote="true">
- <attribute name="interviewPodId" value="-1" />
- <attribute name="ratioW" value="1" />
- <attribute name="ratioH" value="1" />
-
- <attribute name="videoInsetX" value="2" type="number" />
- <attribute name="videoInsetY" value="21" type="number" />
- <attribute name="bottomBarHeight" value="0" type="number" />
-
- <handler name="oninit">
- <![CDATA[
- if ($debug) Debug.write("Init videoObjectPlayBroadcast ",this.isremote,this.clientVars);
- //Display widget defined in mother class
- this._loudness.bringToFront();
- this._resizeview.bringToFront();
- ]]>
- </handler>
-
- <!--- Change the video resolution by chaning pod size -->
- <method name="setDefaultVideoSize" args="w,h">
- this.initRatio = w / h;
- this.setAttribute("width", w + this.videoInsetX);
-
- if (canvas.currentRoomObj.showMicrophoneStatus) {
- this.setAttribute("bottomBarHeight", this._innertop.height + 1);
- }
- this.setAttribute("height", (minimized ? 0 : h) + this.videoInsetY + this.bottomBarHeight);
- </method>
-
- <view name="_chatvideoinner" x="$once{ parent.videoInsetX-1 }" y="$once{ parent.videoInsetY-1 }"
- height="${parent.height-parent.videoInsetY-parent.bottomBarHeight}"
- width="${parent.width-parent.videoInsetX}">
-
- <attribute name="initH" />
- <attribute name="initW" />
-
- <handler name="oninit">
- this.r.setAttribute('frame',5);
- this.initH = this.height;
- this.initW = this.width;
- </handler>
-
- <view name="r"></view>
-
- <baseVideoStreamDevice name="_videostream"
- bgcolor="black" width="${parent.width}" height="${parent.height}">
- <handler name="onlevel">
- var fullLength = parent.height-24;
- parent._activityLevel.setAttribute("height",-this.level*(fullLength/100));
- </handler>
- </baseVideoStreamDevice>
-
- <view name="_activityLevel" width="6" x="2" y="${parent.height}"
- opacity="0.5" bgcolor="0x00FF00" height="0" />
- </view>
- </class>
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+ <!--- Contains no microphone or camera Object, this view can only subscribe
+ to a video or live-stream -->
+ <class name="videoObjectPlayBroadcast" extends="baseVideoObject" isremote="true">
+ <attribute name="interviewPodId" value="-1" />
+ <attribute name="ratioW" value="1" />
+ <attribute name="ratioH" value="1" />
+
+ <attribute name="videoInsetX" value="2" type="number" />
+ <attribute name="videoInsetY" value="21" type="number" />
+ <attribute name="bottomBarHeight" value="0" type="number" />
+
+ <handler name="oninit">
+ <![CDATA[
+ if ($debug) Debug.write("Init videoObjectPlayBroadcast ",this.isremote,this.clientVars);
+ //Display widget defined in mother class
+ this._loudness.bringToFront();
+ this._resizeview.bringToFront();
+ ]]>
+ </handler>
+
+ <!--- Change the video resolution by chaning pod size -->
+ <method name="setDefaultVideoSize" args="w,h">
+ this.initRatio = w / h;
+ this.setAttribute("width", w + this.videoInsetX);
+
+ if (canvas.currentRoomObj.showMicrophoneStatus) {
+ this.setAttribute("bottomBarHeight", this._innertop.height + 1);
+ }
+ this.setAttribute("height", (minimized ? 0 : h) + this.videoInsetY + this.bottomBarHeight);
+ </method>
+
+ <view name="_chatvideoinner" x="$once{ parent.videoInsetX-1 }" y="$once{ parent.videoInsetY-1 }"
+ height="${parent.height-parent.videoInsetY-parent.bottomBarHeight}"
+ width="${parent.width-parent.videoInsetX}">
+
+ <attribute name="initH" />
+ <attribute name="initW" />
+
+ <handler name="oninit">
+ this.r.setAttribute('frame',5);
+ this.initH = this.height;
+ this.initW = this.width;
+ </handler>
+
+ <view name="r"></view>
+
+ <baseVideoStreamDevice name="_videostream"
+ bgcolor="black" width="${parent.width}" height="${parent.height}">
+ <handler name="onlevel">
+ var fullLength = parent.height-24;
+ parent._activityLevel.setAttribute("height",-this.level*(fullLength/100));
+ </handler>
+ </baseVideoStreamDevice>
+
+ <view name="_activityLevel" width="6" x="2" y="${parent.height}"
+ opacity="0.5" bgcolor="0x00FF00" height="0" />
+ </view>
+ </class>
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/video/videoObjectPlayTestBroadcast.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/video/videoObjectPlayTestBroadcast.lzx b/openmeetings-flash/src/main/swf/video/videoObjectPlayTestBroadcast.lzx
index e989ae5..e2237da 100644
--- a/openmeetings-flash/src/main/swf/video/videoObjectPlayTestBroadcast.lzx
+++ b/openmeetings-flash/src/main/swf/video/videoObjectPlayTestBroadcast.lzx
@@ -1,41 +1,41 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-
-<!---
- contains microphone and camera for broadcasting,
- this class is used only in Meetings-Modus
- -->
-
-
-<class name="videoObjectPlayTestBroadcast" extends="view" >
-
- <view name="_chatvideoinner" x="0" y="0" height="${parent.height}" width="${parent.width}">
-
- <baseVideoStream name="_videostream" mode="broadcast"
- width="${parent.width}" height="${parent.height}" bgcolor="0x000000" />
-
- </view>
-</class>
-
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+
+<!---
+ contains microphone and camera for broadcasting,
+ this class is used only in Meetings-Modus
+ -->
+
+
+<class name="videoObjectPlayTestBroadcast" extends="view" >
+
+ <view name="_chatvideoinner" x="0" y="0" height="${parent.height}" width="${parent.width}">
+
+ <baseVideoStream name="_videostream" mode="broadcast"
+ width="${parent.width}" height="${parent.height}" bgcolor="0x000000" />
+
+ </view>
+</class>
+
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/video/videoObjectTestBroadcast.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/video/videoObjectTestBroadcast.lzx b/openmeetings-flash/src/main/swf/video/videoObjectTestBroadcast.lzx
index 2fff0a2..bec171d 100644
--- a/openmeetings-flash/src/main/swf/video/videoObjectTestBroadcast.lzx
+++ b/openmeetings-flash/src/main/swf/video/videoObjectTestBroadcast.lzx
@@ -1,55 +1,55 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-
-<!---
- contains microphone and camera for broadcasting,
- this class is used only in Meetings-Modus
- -->
-
-
-<class name="videoObjectTestBroadcast" extends="view" >
-
- <event name="sendCameraStatus" />
-
- <event name="sendMicroStatus" />
-
- <view name="_chatvideoinner" x="0" y="0" height="${parent.height}" width="${parent.width}">
-
- <baseVideoStreamDevice name="_videostream" mode="broadcast" sendNotificationViaLocalConnection="false"
- width="${parent.width}" height="${parent.height}" bgcolor="0x000000">
- <handler name="sendCameraStatus" args="camStatus">
- if ($debug) Debug.write("sendCameraStatus",camStatus);
- parent.parent.sendCameraStatus.sendEvent(camStatus);
- </handler>
-
- <handler name="sendMicroStatus" args="micStatus">
- if ($debug) Debug.write("sendMicroStatus",micStatus);
- parent.parent.sendMicroStatus.sendEvent(micStatus);
- </handler>
- </baseVideoStreamDevice>
-
- </view>
-</class>
-
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+
+<!---
+ contains microphone and camera for broadcasting,
+ this class is used only in Meetings-Modus
+ -->
+
+
+<class name="videoObjectTestBroadcast" extends="view" >
+
+ <event name="sendCameraStatus" />
+
+ <event name="sendMicroStatus" />
+
+ <view name="_chatvideoinner" x="0" y="0" height="${parent.height}" width="${parent.width}">
+
+ <baseVideoStreamDevice name="_videostream" mode="broadcast" sendNotificationViaLocalConnection="false"
+ width="${parent.width}" height="${parent.height}" bgcolor="0x000000">
+ <handler name="sendCameraStatus" args="camStatus">
+ if ($debug) Debug.write("sendCameraStatus",camStatus);
+ parent.parent.sendCameraStatus.sendEvent(camStatus);
+ </handler>
+
+ <handler name="sendMicroStatus" args="micStatus">
+ if ($debug) Debug.write("sendMicroStatus",micStatus);
+ parent.parent.sendMicroStatus.sendEvent(micStatus);
+ </handler>
+ </baseVideoStreamDevice>
+
+ </view>
+</class>
+
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/video/videoUserProfilePicSWF10.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/video/videoUserProfilePicSWF10.lzx b/openmeetings-flash/src/main/swf/video/videoUserProfilePicSWF10.lzx
index dda7420..9795677 100644
--- a/openmeetings-flash/src/main/swf/video/videoUserProfilePicSWF10.lzx
+++ b/openmeetings-flash/src/main/swf/video/videoUserProfilePicSWF10.lzx
@@ -1,36 +1,36 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="videoUserProfilePicSWF10" extends="view" x="1" y="2" width="${parent.width-2}" height="${parent.height-3}"
- clip="true" bgcolor="white">
- <attribute name="value" value="null" />
-
- <handler name="oninit">
- <![CDATA[
- if ($debug) Debug.write("videoUserProfilePicSWF10::oninit", this);
- this._userpic.setAttribute('src', canvas.getPictureUrl(value.userId, value.picture_uri));
- ]]>
- </handler>
- <omImage name="_userpic" stretches="both" width="${parent.width}" height="${parent.height}" />
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="videoUserProfilePicSWF10" extends="view" x="1" y="2" width="${parent.width-2}" height="${parent.height-3}"
+ clip="true" bgcolor="white">
+ <attribute name="value" value="null" />
+
+ <handler name="oninit">
+ <![CDATA[
+ if ($debug) Debug.write("videoUserProfilePicSWF10::oninit", this);
+ this._userpic.setAttribute('src', canvas.getPictureUrl(value.userId, value.picture_uri));
+ ]]>
+ </handler>
+ <omImage name="_userpic" stretches="both" width="${parent.width}" height="${parent.height}" />
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/video/volumeSlider.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/video/volumeSlider.lzx b/openmeetings-flash/src/main/swf/video/volumeSlider.lzx
index 9d636aa..0f4c93c 100644
--- a/openmeetings-flash/src/main/swf/video/volumeSlider.lzx
+++ b/openmeetings-flash/src/main/swf/video/volumeSlider.lzx
@@ -1,68 +1,68 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
- <class name="VolumeSlider" extends="closableView" clickable="true" height="120">
- <attribute name="videoStream" value="null" />
- <attribute name="ownStream" type="boolean" value="false" />
- <attribute name="resizing" type="boolean" value="false" />
-
- <attribute name="videoObject" value="null" />
- <attribute name="initialNumber" value="50" type="number" />
- <attribute name="maxvalue" value="100" type="number" />
-
- <!--- @keywords private -->
- <method name="passModeEvent" args="eventStr,view">
- <![CDATA[
- if (eventStr == "onmousedown") {
- if (null != view) {
- if (!view.childOf(this)) {
- this.close();
- }
- } else {
- this.close();
- }
- }
- if (view && view.childOf(this)) {
- if (view[eventStr]) {
- view[eventStr].sendEvent(view);
- }
- return false;
- }
- return true;
- ]]>
- </method>
-
- <vslider name="_slider" height="$once{parent.height}" y="10" x="0" minvalue="0" maxvalue="100" initvalue="$once{ parent.initialNumber }"
- showrange="false" showvalue="false" switchaxis="true">
- <handler name="onvalue" args="v">
- if ($debug) Debug.write("onvalue", v);
-
- parent.videoObject.setStreamVolume(Number(v));
- </handler>
- <handler name="onvalueChosenFinal">
- parent.close();
- </handler>
- </vslider>
-
- </class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+ <class name="VolumeSlider" extends="closableView" clickable="true" height="120">
+ <attribute name="videoStream" value="null" />
+ <attribute name="ownStream" type="boolean" value="false" />
+ <attribute name="resizing" type="boolean" value="false" />
+
+ <attribute name="videoObject" value="null" />
+ <attribute name="initialNumber" value="50" type="number" />
+ <attribute name="maxvalue" value="100" type="number" />
+
+ <!--- @keywords private -->
+ <method name="passModeEvent" args="eventStr,view">
+ <![CDATA[
+ if (eventStr == "onmousedown") {
+ if (null != view) {
+ if (!view.childOf(this)) {
+ this.close();
+ }
+ } else {
+ this.close();
+ }
+ }
+ if (view && view.childOf(this)) {
+ if (view[eventStr]) {
+ view[eventStr].sendEvent(view);
+ }
+ return false;
+ }
+ return true;
+ ]]>
+ </method>
+
+ <vslider name="_slider" height="$once{parent.height}" y="10" x="0" minvalue="0" maxvalue="100" initvalue="$once{ parent.initialNumber }"
+ showrange="false" showvalue="false" switchaxis="true">
+ <handler name="onvalue" args="v">
+ if ($debug) Debug.write("onvalue", v);
+
+ parent.videoObject.setStreamVolume(Number(v));
+ </handler>
+ <handler name="onvalueChosenFinal">
+ parent.close();
+ </handler>
+ </vslider>
+
+ </class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/site/site.xml b/openmeetings-flash/src/site/site.xml
index b7a0eae..dd3dc53 100644
--- a/openmeetings-flash/src/site/site.xml
+++ b/openmeetings-flash/src/site/site.xml
@@ -1,39 +1,39 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu ref="parent"/>
- <menu name="Project">
- <item name="About" href="/index.html" />
- <item name="Info" href="/project-info.html" />
- <item name="Summary" href="/project-summary.html" />
- <item name="License" href="/license.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Dependency Convergence" href="/dependency-convergence.html" />
- <item name="RAT Report" href="/rat-report.html" />
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <bottomNav maxSpan="12">
- <column>Parent Project</column>
- <column>Project</column>
- </bottomNav>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu ref="parent"/>
+ <menu name="Project">
+ <item name="About" href="/index.html" />
+ <item name="Info" href="/project-info.html" />
+ <item name="Summary" href="/project-summary.html" />
+ <item name="License" href="/license.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Dependency Convergence" href="/dependency-convergence.html" />
+ <item name="RAT Report" href="/rat-report.html" />
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <bottomNav maxSpan="12">
+ <column>Parent Project</column>
+ <column>Project</column>
+ </bottomNav>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java
index 71c8ebc..79ee837 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java
@@ -1,55 +1,55 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import java.util.Map;
-
-import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.entity.calendar.Appointment;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class AppointmentConverter extends OmConverter<Appointment> {
- private AppointmentDao appointmentDao;
- private Map<Long, Long> idMap;
-
- public AppointmentConverter() {
- //default constructor is for export
- }
-
- public AppointmentConverter(AppointmentDao appointmentDao, Map<Long, Long> idMap) {
- this.appointmentDao = appointmentDao;
- this.idMap = idMap;
- }
-
- @Override
- public Appointment read(InputNode node) throws Exception {
- long oldId = getLong(node);
- Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
-
- Appointment a = appointmentDao.getAny(newId);
- return a == null ? new Appointment() : a;
- }
-
- @Override
- public void write(OutputNode node, Appointment value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? "0" : "" + value.getId());
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class AppointmentConverter extends OmConverter<Appointment> {
+ private AppointmentDao appointmentDao;
+ private Map<Long, Long> idMap;
+
+ public AppointmentConverter() {
+ //default constructor is for export
+ }
+
+ public AppointmentConverter(AppointmentDao appointmentDao, Map<Long, Long> idMap) {
+ this.appointmentDao = appointmentDao;
+ this.idMap = idMap;
+ }
+
+ @Override
+ public Appointment read(InputNode node) throws Exception {
+ long oldId = getLong(node);
+ Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
+
+ Appointment a = appointmentDao.getAny(newId);
+ return a == null ? new Appointment() : a;
+ }
+
+ @Override
+ public void write(OutputNode node, Appointment value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? "0" : "" + value.getId());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentReminderTypeConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentReminderTypeConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentReminderTypeConverter.java
index d0750c5..aec044e 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentReminderTypeConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentReminderTypeConverter.java
@@ -1,39 +1,39 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class AppointmentReminderTypeConverter extends OmConverter<Reminder> {
- public AppointmentReminderTypeConverter() {
- }
-
- @Override
- public Reminder read(InputNode node) throws Exception {
- return Reminder.get(getInt(node));
- }
-
- @Override
- public void write(OutputNode node, Reminder value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? "0" : "" + value.getId());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class AppointmentReminderTypeConverter extends OmConverter<Reminder> {
+ public AppointmentReminderTypeConverter() {
+ }
+
+ @Override
+ public Reminder read(InputNode node) throws Exception {
+ return Reminder.get(getInt(node));
+ }
+
+ @Override
+ public void write(OutputNode node, Reminder value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? "0" : "" + value.getId());
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/DateConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/DateConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/DateConverter.java
index d44ddbd..7f3967d 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/DateConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/DateConverter.java
@@ -1,41 +1,41 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import java.util.Date;
-
-import org.apache.openmeetings.util.CalendarPatterns;
-import org.simpleframework.xml.convert.Converter;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class DateConverter implements Converter<Date> {
- @Override
- public Date read(InputNode node) throws Exception {
- String val = node.getValue();
- return val == null || "null".equals(val) ? new Date() : CalendarPatterns.parseImportDate(val);
- }
-
- @Override
- public void write(OutputNode node, Date value) throws Exception {
- node.setAttribute("class", "java.util.Date");
- node.setData(true);
- node.setValue(value == null ? "0" : CalendarPatterns.getExportDate(value));
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Date;
+
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.simpleframework.xml.convert.Converter;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class DateConverter implements Converter<Date> {
+ @Override
+ public Date read(InputNode node) throws Exception {
+ String val = node.getValue();
+ return val == null || "null".equals(val) ? new Date() : CalendarPatterns.parseImportDate(val);
+ }
+
+ @Override
+ public void write(OutputNode node, Date value) throws Exception {
+ node.setAttribute("class", "java.util.Date");
+ node.setData(true);
+ node.setValue(value == null ? "0" : CalendarPatterns.getExportDate(value));
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/GroupConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/GroupConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/GroupConverter.java
index 29cee41..67c363b 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/GroupConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/GroupConverter.java
@@ -1,55 +1,55 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import java.util.Map;
-
-import org.apache.openmeetings.db.dao.user.GroupDao;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class GroupConverter extends OmConverter<Group> {
- private GroupDao groupDao;
- private Map<Long, Long> idMap;
-
- public GroupConverter() {
- //default constructor is for export
- }
-
- public GroupConverter(GroupDao groupDao, Map<Long, Long> idMap) {
- this.groupDao = groupDao;
- this.idMap = idMap;
- }
-
- @Override
- public Group read(InputNode node) throws Exception {
- long oldId = getLong(node);
- long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
-
- Group o = groupDao.get(newId);
- return o == null ? new Group() : o;
- }
-
- @Override
- public void write(OutputNode node, Group value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? "0" : "" + value.getId());
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class GroupConverter extends OmConverter<Group> {
+ private GroupDao groupDao;
+ private Map<Long, Long> idMap;
+
+ public GroupConverter() {
+ //default constructor is for export
+ }
+
+ public GroupConverter(GroupDao groupDao, Map<Long, Long> idMap) {
+ this.groupDao = groupDao;
+ this.idMap = idMap;
+ }
+
+ @Override
+ public Group read(InputNode node) throws Exception {
+ long oldId = getLong(node);
+ long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
+
+ Group o = groupDao.get(newId);
+ return o == null ? new Group() : o;
+ }
+
+ @Override
+ public void write(OutputNode node, Group value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? "0" : "" + value.getId());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/InlineConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/InlineConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/InlineConverter.java
index 4ab9f24..de31d41 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/InlineConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/InlineConverter.java
@@ -1,29 +1,29 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import org.simpleframework.xml.stream.InputNode;
-
-public abstract class InlineConverter<T> extends OmConverter<T> {
-
- String getNextValue(InputNode parent, String name) throws Exception {
- InputNode node = parent.getNext(name);
- return node != null ? node.getValue() : null;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.simpleframework.xml.stream.InputNode;
+
+public abstract class InlineConverter<T> extends OmConverter<T> {
+
+ String getNextValue(InputNode parent, String name) throws Exception {
+ InputNode node = parent.getNext(name);
+ return node != null ? node.getValue() : null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java
index 6f6aa7f..dc7dc7e 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java
@@ -1,34 +1,34 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import org.simpleframework.xml.transform.Transform;
-
-public class IntegerTransform implements Transform<Integer>{
- @Override
- public Integer read(String value) throws Exception {
- return OmConverter.getInt(value, 0);
- }
-
- @Override
- public String write(Integer value) throws Exception {
- return "" + value;
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.simpleframework.xml.transform.Transform;
+
+public class IntegerTransform implements Transform<Integer>{
+ @Override
+ public Integer read(String value) throws Exception {
+ return OmConverter.getInt(value, 0);
+ }
+
+ @Override
+ public String write(Integer value) throws Exception {
+ return "" + value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java
index d48be83..e171383 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java
@@ -1,33 +1,33 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import org.simpleframework.xml.transform.Transform;
-
-public class LongTransform implements Transform<Long> {
- @Override
- public Long read(String value) throws Exception {
- return OmConverter.getLong(value);
- }
-
- @Override
- public String write(Long value) throws Exception {
- return "" + value;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.simpleframework.xml.transform.Transform;
+
+public class LongTransform implements Transform<Long> {
+ @Override
+ public Long read(String value) throws Exception {
+ return OmConverter.getLong(value);
+ }
+
+ @Override
+ public String write(Long value) throws Exception {
+ return "" + value;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmCalendarConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmCalendarConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmCalendarConverter.java
index 613e6ff..f4c9349 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmCalendarConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmCalendarConverter.java
@@ -1,55 +1,55 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import java.util.Map;
-
-import org.apache.openmeetings.db.dao.calendar.OmCalendarDao;
-import org.apache.openmeetings.db.entity.calendar.OmCalendar;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class OmCalendarConverter extends OmConverter<OmCalendar> {
- private OmCalendarDao calendarDao;
- private Map<Long, Long> idMap;
-
- public OmCalendarConverter() {
- //default constructor is for export
- }
-
- public OmCalendarConverter(OmCalendarDao calendarDao, Map<Long, Long> idMap) {
- this.calendarDao = calendarDao;
- this.idMap = idMap;
- }
-
- @Override
- public OmCalendar read(InputNode node) throws Exception {
- long oldId = getLong(node);
- Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
-
- OmCalendar c = calendarDao.get(newId);
- return c == null ? new OmCalendar() : c;
- }
-
- @Override
- public void write(OutputNode node, OmCalendar value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? "0" : "" + value.getId());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.calendar.OmCalendarDao;
+import org.apache.openmeetings.db.entity.calendar.OmCalendar;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class OmCalendarConverter extends OmConverter<OmCalendar> {
+ private OmCalendarDao calendarDao;
+ private Map<Long, Long> idMap;
+
+ public OmCalendarConverter() {
+ //default constructor is for export
+ }
+
+ public OmCalendarConverter(OmCalendarDao calendarDao, Map<Long, Long> idMap) {
+ this.calendarDao = calendarDao;
+ this.idMap = idMap;
+ }
+
+ @Override
+ public OmCalendar read(InputNode node) throws Exception {
+ long oldId = getLong(node);
+ Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
+
+ OmCalendar c = calendarDao.get(newId);
+ return c == null ? new OmCalendar() : c;
+ }
+
+ @Override
+ public void write(OutputNode node, OmCalendar value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? "0" : "" + value.getId());
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmConverter.java
index 6d3055e..34539e1 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/OmConverter.java
@@ -1,56 +1,56 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import org.simpleframework.xml.convert.Converter;
-import org.simpleframework.xml.stream.InputNode;
-
-public abstract class OmConverter<T> implements Converter<T> {
- static long getLong(InputNode node) throws Exception {
- return getLong(node.getValue());
- }
-
- static long getLong(String value) {
- return getLong(value, 0);
- }
-
- static long getLong(String value, long def) {
- long result = def;
- try {
- result = Long.valueOf(value).longValue();
- } catch (Exception e) {
- //no op
- }
- return result;
- }
-
- static int getInt(InputNode node) throws Exception {
- return getInt(node.getValue(), 0);
- }
-
- static int getInt(String value, int def) {
- int result = def;
- try {
- result = Integer.valueOf(value).intValue();
- } catch (Exception e) {
- //no op
- }
- return result;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.simpleframework.xml.convert.Converter;
+import org.simpleframework.xml.stream.InputNode;
+
+public abstract class OmConverter<T> implements Converter<T> {
+ static long getLong(InputNode node) throws Exception {
+ return getLong(node.getValue());
+ }
+
+ static long getLong(String value) {
+ return getLong(value, 0);
+ }
+
+ static long getLong(String value, long def) {
+ long result = def;
+ try {
+ result = Long.valueOf(value).longValue();
+ } catch (Exception e) {
+ //no op
+ }
+ return result;
+ }
+
+ static int getInt(InputNode node) throws Exception {
+ return getInt(node.getValue(), 0);
+ }
+
+ static int getInt(String value, int def) {
+ int result = def;
+ try {
+ result = Integer.valueOf(value).intValue();
+ } catch (Exception e) {
+ //no op
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.java
index 3381b3f..365904d 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.java
@@ -1,38 +1,38 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import org.apache.openmeetings.db.entity.room.RoomPoll;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class PollTypeConverter extends OmConverter<RoomPoll.Type> {
- public PollTypeConverter() {}
-
- @Override
- public RoomPoll.Type read(InputNode node) throws Exception {
- return RoomPoll.Type.get(getLong(node));
- }
-
- @Override
- public void write(OutputNode node, RoomPoll.Type value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? "0" : "" + value.getId());
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.entity.room.RoomPoll;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class PollTypeConverter extends OmConverter<RoomPoll.Type> {
+ public PollTypeConverter() {}
+
+ @Override
+ public RoomPoll.Type read(InputNode node) throws Exception {
+ return RoomPoll.Type.get(getLong(node));
+ }
+
+ @Override
+ public void write(OutputNode node, RoomPoll.Type value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? "0" : "" + value.getId());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RecordingStatusConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RecordingStatusConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RecordingStatusConverter.java
index e751335..128ee13 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RecordingStatusConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RecordingStatusConverter.java
@@ -1,47 +1,47 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.db.entity.record.Recording.Status;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class RecordingStatusConverter extends OmConverter<Recording.Status> {
- private static final String PROCESSING = "PROCESSING";
- public RecordingStatusConverter() {}
-
- @Override
- public Recording.Status read(InputNode node) throws Exception {
- Recording.Status result = null;
- String val = node.getValue();
- try {
- result = Recording.Status.valueOf(val);
- } catch (Exception e) {
- result = PROCESSING.equals(val) ? Status.CONVERTING : Status.NONE;
- }
- return result;
- }
-
- @Override
- public void write(OutputNode node, Recording.Status value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? Status.NONE.name() : value.name());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.record.Recording.Status;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class RecordingStatusConverter extends OmConverter<Recording.Status> {
+ private static final String PROCESSING = "PROCESSING";
+ public RecordingStatusConverter() {}
+
+ @Override
+ public Recording.Status read(InputNode node) throws Exception {
+ Recording.Status result = null;
+ String val = node.getValue();
+ try {
+ result = Recording.Status.valueOf(val);
+ } catch (Exception e) {
+ result = PROCESSING.equals(val) ? Status.CONVERTING : Status.NONE;
+ }
+ return result;
+ }
+
+ @Override
+ public void write(OutputNode node, Recording.Status value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? Status.NONE.name() : value.name());
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomConverter.java
index 3a0fa36..20ccba1 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomConverter.java
@@ -1,55 +1,55 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import java.util.Map;
-
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class RoomConverter extends OmConverter<Room> {
- private RoomDao roomDao;
- private Map<Long, Long> idMap;
-
- public RoomConverter() {
- //default constructor is for export
- }
-
- public RoomConverter(RoomDao roomDao, Map<Long, Long> idMap) {
- this.roomDao = roomDao;
- this.idMap = idMap;
- }
-
- @Override
- public Room read(InputNode node) throws Exception {
- long oldId = getLong(node);
- long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
-
- Room r = roomDao.get(newId);
- return r == null ? new Room() : r;
- }
-
- @Override
- public void write(OutputNode node, Room value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? "0" : "" + value.getId());
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class RoomConverter extends OmConverter<Room> {
+ private RoomDao roomDao;
+ private Map<Long, Long> idMap;
+
+ public RoomConverter() {
+ //default constructor is for export
+ }
+
+ public RoomConverter(RoomDao roomDao, Map<Long, Long> idMap) {
+ this.roomDao = roomDao;
+ this.idMap = idMap;
+ }
+
+ @Override
+ public Room read(InputNode node) throws Exception {
+ long oldId = getLong(node);
+ long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
+
+ Room r = roomDao.get(newId);
+ return r == null ? new Room() : r;
+ }
+
+ @Override
+ public void write(OutputNode node, Room value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? "0" : "" + value.getId());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomTypeConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomTypeConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomTypeConverter.java
index 2696c27..a6f8f5b 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomTypeConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/RoomTypeConverter.java
@@ -1,38 +1,38 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import org.apache.openmeetings.db.entity.room.Room.Type;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class RoomTypeConverter extends OmConverter<Type> {
- public RoomTypeConverter() {}
-
- @Override
- public Type read(InputNode node) throws Exception {
- return Type.get(getInt(node));
- }
-
- @Override
- public void write(OutputNode node, Type value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? "0" : "" + value.getId());
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.entity.room.Room.Type;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class RoomTypeConverter extends OmConverter<Type> {
+ public RoomTypeConverter() {}
+
+ @Override
+ public Type read(InputNode node) throws Exception {
+ return Type.get(getInt(node));
+ }
+
+ @Override
+ public void write(OutputNode node, Type value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? "0" : "" + value.getId());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/SalutationConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/SalutationConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/SalutationConverter.java
index 70e19af..59e680a 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/SalutationConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/SalutationConverter.java
@@ -1,36 +1,36 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import org.apache.openmeetings.db.entity.user.User.Salutation;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class SalutationConverter extends OmConverter<Salutation> {
- @Override
- public Salutation read(InputNode node) throws Exception {
- return Salutation.get(getInt(node));
- }
-
- @Override
- public void write(OutputNode node, Salutation value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? "0" : "" + value.getId());
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.entity.user.User.Salutation;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class SalutationConverter extends OmConverter<Salutation> {
+ @Override
+ public Salutation read(InputNode node) throws Exception {
+ return Salutation.get(getInt(node));
+ }
+
+ @Override
+ public void write(OutputNode node, Salutation value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? "0" : "" + value.getId());
+ }
}
\ No newline at end of file
[20/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx b/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx
index 676f9cf..d58daa5 100644
--- a/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx
+++ b/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx
@@ -1,721 +1,721 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-
- <!--- Base container for a client, can be either: a remote-video (subscribing/playing a video) or a self-video (broadcasting
- a cam/mic) -->
- <class name="baseVideoObject" extends="view" bgcolor="0x000000" width="122" height="101">
-
- <switch>
- <when property="$as3">
- <passthrough>
- import flash.filters.DropShadowFilter;
- import flash.media.*
- import flash.net.SharedObject;
- </passthrough>
- </when>
- </switch>
-
- <!--- @keywords private -->
- <attribute name="chatpartnername" value="" type="string" />
- <!--- @keywords private -->
- <attribute name="showUserProfilePic" type="boolean" value="false" />
-
- <!--- color of this user, this is the color the user will also use for his chat-color -->
- <attribute name="usercolor" value="0" type="number" />
-
- <!--- publicSID is a hash-value to identify a user -->
- <attribute name="publicSID" value="" type="string" />
-
- <!--- micMuted indicates if the microphone is currently turned sound or gain to 0 -->
- <attribute name="micMuted" value="false" type="boolean" />
-
- <!--- @keywords private -->
- <attribute name="isremote" value="true" type="boolean" />
-
- <!--- @keywords private -->
- <attribute name="clientVars" value="null" />
-
- <!--- @keywords private -->
- <attribute name="isResizing" value="false" type="boolean" />
-
- <!--- @keywords private -->
- <attribute name="isInterview" value="false" type="boolean" />
-
- <attribute name="respectRatio" value="true" type="boolean" />
-
- <attribute name="minimized" value="false" type="boolean" />
-
- <attribute name="custom" value="false" type="boolean" />
-
- <attribute name="initH" value="40" type="number" />
- <attribute name="initW" value="40" type="number" />
-
- <attribute name="isShowMicMute" value="false" type="boolean" />
-
- <attribute name="isMutedByModerator" value="false" type="boolean" />
-
- <attribute name="isMicrophonesRoom" value="false" type="boolean" />
-
- <attribute name="lastPositiveVolume" type="number" value="50" />
-
- <!-- Initial stream ratio: width / height -->
- <attribute name="initRatio" type="number" value="null" />
- <attribute name="initialHeight" value="$once{ this.height }" type="number" />
-
- <handler name="onisremote" args="r">
- this.isremote = r;
- </handler>
-
- <handler name="oninit">
- <![CDATA[
- this.clientVars = new Array();
- this.clientVars['User']='No User Connected';
-
- if (this.isInterview) {
- this._toolbar._minimize.setAttribute("visibility","hidden");
- this._resizeview.setAttribute("visibility","hidden");
- this._innerbottom.setAttribute("visibility","hidden");
- return;
- }
-
- if (this.custom) {
- this._toolbar._minimize.setAttribute("visibility","hidden");
- this._resizeview.setAttribute("visibility","hidden");
- this._toolbar.setAttribute("visibility","hidden");
- this._resizeview.setAttribute("visibility","hidden");
- this._loudness.setAttribute("visibility","hidden");
- this._innertop.setAttribute("visibility","hidden");
- this._innerbottom.setAttribute("visibility","hidden");
- }
- this.setShadow();
-
- if (this.publicSID == canvas.publicSID) {
- this._toolbar._resync._tip.setAttribute("labelid",610);
- }
- this._giveExclusiveAudioView.bringToFront();
-
- this.isMicrophonesRoom = canvas.currentRoomObj.showMicrophoneStatus;
- if (isMicrophonesRoom) {
- this._innertop.setAttribute("bgcolor", "0xFF6600");
- this._innerbottom.setAttribute("bgcolor", "0xFF6600");
- } else {
- this._innerbottom.setAttribute("visibility", "hidden");
- }
- ]]>
- </handler>
-
- <handler name="ony">
- <![CDATA[
- if (this.isInterview || this.custom || canvas.currentRoomObj.hideWhiteboard) {
- return;
- }
- var bounds = this.getBounds();
- var parentBounds = canvas.getBounds();
- if (bounds.y < 0) {
- this.setAttribute('y',0);
- }
- if (bounds.y > (parentBounds.height - bounds.height)) {
- this.setAttribute('y', parentBounds.height - bounds.height );
- }
- ]]>
- </handler>
-
- <handler name="onx">
- <![CDATA[
- if (this.isInterview || this.custom) {
- return;
- }
-
- var bounds = this.getBounds();
- var parentBounds = canvas.getBounds();
- if (bounds.x < 0) {
- this.setAttribute('x',0);
- }
-
- if (bounds.x > (parentBounds.width - bounds.width)) {
- this.setAttribute('x', parentBounds.width - bounds.width );
- }
- ]]>
- </handler>
-
- <method name="setShadow">
- <![CDATA[
- if (this.isinited){
- this.normalMC = this.getDisplayObject();
- //if($debug) Debug.write(this.normalMC);
- //if($debug) Debug.write("this.normalMC: ",this.normalMC);
- //if($debug) Debug.write("this: ",this);
- this.displacementMap = new flash.filters.DropShadowFilter();
- this.normalMC.filters = [this.displacementMap];
- }
- ]]>
- </method>
-
- <!-- respect ratio and keep minimum width / height -->
- <method name="setItemContraintsWidth" args="unused">
- <![CDATA[
- if (!this.respectRatio) {
- return;
- }
- var h=this.width * this.initH/this.initW;
- h=((h < this.initH ) ? initH : h);
-
- if ($debug) Debug.write("setItemContraintsWidth",this.respectRatio,'orig',this.height,this.width,'new h',h);
-
- this.setAttribute("height",h);
- ]]>
- </method>
-
- <method name="setItemContraintsHeight" args="unused">
- <![CDATA[
- if (!this.respectRatio) {
- return;
- }
- var w=this.height * this.initW/this.initH;
- w=((w < this.initW ) ? initW : w);
-
- if ($debug) Debug.write("setItemContraintsHeight",this.respectRatio,'orig',this.height,this.width,'new w',w);
-
- this.setAttribute("width",w);
- ]]>
- </method>
-
- <method name="updateAVSettingsSymbol" args="rcl">
- <![CDATA[
- //FIXME: Set a Symbol whereve this Client is Audio(only)/Video(only), both or Profile Picture
- if ($debug) Debug.warn("updateAVSettingsSymbol TODO ", rcl, this);
- switch (rcl.avsettings) {
- case "av":
- this.setDefaultVideoSize(rcl.VWidth, rcl.VHeight);
- this.setAttribute("visible", true);
- this._toolbar._mute.setAttribute("visible", true);
- this._toolbar._volume.setAttribute("visible", true);
- if(!canvas.isInterview && this.minimized) {
- this.reminimize();
- }
- this.deleteVideoConfProfilePic();
- break;
- case "a":
- this.setAttribute("visible", true);
- this._toolbar._mute.setAttribute("visible", true);
- this._toolbar._volume.setAttribute("visible", true);
- if(!canvas.isInterview && this.minimized) {
- this.reminimize();
- }
- this.setVideouserProfilePic(rcl);
- break;
- case "v":
- this.setDefaultVideoSize(rcl.VWidth, rcl.VHeight);
- this.setAttribute("visible", true);
- this._toolbar._mute.setAttribute("visible", false);
- this._toolbar._volume.setAttribute("visible", false);
- if(!canvas.isInterview && this.minimized) {
- this.reminimize();
- }
- this.deleteVideoConfProfilePic();
- break;
- case "n":
- if ($debug) Debug.write("Do not Publish A/V");
- //Prevent from Hiding the Box in Event Modus
- if (canvas.thishib.modus == "conference") {
- this.setAttribute("visible", false);
- }
- break;
- default:
- if ($debug) Debug.warn("no valid device Setup chosen");
- break;
- }
- ]]>
- </method>
-
- <method name="doResize" args="bool">
- if ($debug) Debug.write("doResize",bool);
- if(bool) {
- dragHelper.create();
- } else {
- dragHelper.remove();
- }
- if (this.isInterview || this.custom) {
- return;
- }
-
- if (bool) {
- this.isResizing = true;
- this.rs.apply();
- } else {
- this.isResizing = false;
- this.rs.remove();
- }
- </method>
-
- <!--- resets all values and stops the streaming -->
- <method name="resetValues">
- <![CDATA[
- if ($debug) Debug.write("resetValues: ", this.isremote);
- this.clientVars = null;
- if (this.isremote) {
- this._chatvideoinner._videostream.restart();
- } else {
- deleteVideoConfProfilePic();
- this._chatvideoinner._videostream._stop();
- }
- ]]>
- </method>
-
- <method name="setVideouserProfilePic" args="value">
- if ($debug) Debug.write("### setVideouserProfilePic ",value);
- this.deleteVideoConfProfilePic();
- new lz.videoUserProfilePicSWF10(this._chatvideoinner,{name:'userProfilePic',value:value});
- this.showUserProfilePic = true;
- </method>
-
- <method name="deleteVideoConfProfilePic">
- if ($debug) Debug.write("### deleteVideoConfProfilePic ###");
- if ($debug) Debug.write("delete ",this.showUserProfilePic);
- if (this.showUserProfilePic) {
- this._chatvideoinner.userProfilePic.destroy();
- this.showUserProfilePic = false;
- }
- </method>
-
- <!--- @keywords private -->
- <method name="_startDragState" args="obj">
- if (this.isInterview || this.custom) {
- return;
- }
-
- dragHelper.create();
-
- this.bringToFront();
- parent.bringToFront();
- this.dragger.apply();
- </method>
-
- <!--- @keywords private -->
- <method name="_removeDragState" args="obj">
- <![CDATA[
- lz.Cursor.unlock();
-
- if (this.x < 0) {
- this.setAttribute("x",20);
- }
-
- if (this.y < 0) {
- this.setAttribute("y",20);
- }
-
- if (this.x+this.width > parent.width) {
- this.setAttribute("x",parent.width - this.width - 20);
- }
-
- if (this.y+this.height > parent.height) {
- this.setAttribute("y",parent.height - this.height - 20);
- }
- dragHelper.remove();
- this.dragger.remove();
- ]]>
- </method>
-
- <method name="minimize">
- <![CDATA[
- this.respectRatio = false;
-
- this.setAttribute("minimized",true);
-
- this._toolbar._minimize.setAttribute("visibility","hidden");
- this._toolbar._maximize2.setAttribute("visibility","visible");
-
- for (var eg in this.subviews) {
- if (this.subviews[eg].name != "_toolbar"
- && this.subviews[eg].name != "_innertop"
- && this.subviews[eg].name != "_loudness") {
- this.subviews[eg].setAttribute("visibility","hidden");
- }
- }
-
- this._loudness.setAttribute("x",this.width - 84 - (this.isShowMicMute ? 20 : 0));
- this._loudness.bringToFront();
-
- this.initialHeight = this.height;
- //this.setAttribute("height",20);
- this._minimizeZoom.setAttribute("to",20);
- this._minimizeZoom.setAttribute('started', true);
- ]]>
- </method>
-
- <method name="reminimize">
- <![CDATA[
- this.setAttribute("minimized",false);
-
- this._toolbar._minimize.setAttribute("visibility","visible");
- this._toolbar._maximize2.setAttribute("visibility","hidden");
-
- this._loudness.setAttribute("x",1);
-
- //this.setAttribute("height",this.initialHeight);
- if ($debug) Debug.write("this.initialHeight ",this.initialHeight);
- this._minimizeZoom.setAttribute("to",this.initialHeight);
- this._minimizeZoom.setAttribute('started', true);
- ]]>
- </method>
-
- <method name="reminimizeComplete">
- <![CDATA[
- if (!this.minimized) {
- for (var eg in this.subviews) {
- if (this.subviews[eg].name != "_toolbar"
- && this.subviews[eg].name != "_innertop"
- && this.subviews[eg].name != "_loudness"
- && this.subviews[eg].name != "_innerbottom") {
- this.subviews[eg].setAttribute("visibility","visible");
- }
- }
- if (isMicrophonesRoom) {
- this._innerbottom.setAttribute("visibility", "visible");
- }
- this.respectRatio = true;
- }
- ]]>
- </method>
-
- <view name="_innertop" width="${parent.width-2 }" height="18" x="1" y="1"
- bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
- <text text="${ parent.parent.chatpartnername }" onmousedown="parent.parent._startDragState(this)"
- onmouseup="parent.parent._removeDragState(this)"
- width="${ parent.width-2 }" fgcolor="white" fontsize="9">
- <handler name="onmouseover">
- //cursor="arrow_draw_panel_cursor"
- lz.Cursor.setCursorGlobal("arrow_draw_panel_cursor");
- </handler>
-
- <handler name="onmouseout">
- lz.Cursor.unlock();
- </handler>
- </text>
- </view>
-
- <view name="_innerbottom" width="${parent.width - 2}" x="1" y="${parent.height - 19}" height="18"
- bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
- <text text="${canvas.getLabelName(1434)}" width="${ parent.width-2 }" fgcolor="white" name="title" fontsize="9" />
- </view>
-
- <view name="_loudness" x="1" visible="${parent.isremote}" y="${parent.height - 20 - ((parent._innerbottom.visible) ? 18 : 0) }">
- <method name="setSpeaking" args="bool">
- this.loudness.setAttribute('opacity', bool ? 1 : 0.2);
- </method>
- <view x="2" y="2" name="loudness" resource="speaking" opacity="0.2" onmouseover="" onmouseout="">
- <handler name="onclick">
- <![CDATA[
- if (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio) {
- parent.parent.confirmExclusiveAudio();
- } else {
- new lz.labelerrorPopup(canvas,{errorlabelid:1478});
- }
- ]]>
- </handler>
- <labelTooltip inittwice="true" labelid="372" />
- </view>
- </view>
-
- <view name="_resizeview" x="${ this.parent.width - 16 }" valign="bottom" resource="explorer_resize_rsc" cursor="explorer_resizemouse_rsc"
- onmousedown="this.parent.doResize(true)" onmouseup="this.parent.doResize(false)">
- <handler name="oninit">
- //if ($debug) Debug.write("setTint");
- //TODO: Fix this, does not work at the moment
- //canvas.protocol + '://code.google.com/p/openmeetings/issues/detail?id=470
- this.setAttribute("color", canvas.getThemeColor('baseMousecolorizer'));
- </handler>
- </view>
-
- <method name="resync">
- resetValues();
- if (!isremote) {
- canvas.commonVideoViewContent.removeVideoByUser(this.publicSID);
- canvas.commonVideoViewContent._startAvBroadcast(true);
- }
- </method>
-
- <view name="_toolbar" x="${ parent.width-this.width-2 }" layout="axis:x;spacing:0" y="2">
- <attribute name="isload" value="true" type="boolean" />
-
- <miniIconsPresenter name="_resync" iconRessourceName="resyncuser_rsc">
- <handler name="onclick">
- parent.parent.resync();
- </handler>
- <labelTooltip name="_tip" labelid="540" />
- </miniIconsPresenter>
-
- <miniIconsPresenter name="_mute" width="16" height="16" iconRessourceName="mute_micro_btn_rsc">
- <handler name="onclick">
- parent.parent.silenceMicrophone(!parent.parent.micMuted);
- </handler>
- <labelTooltip name="_tip" labelid="1405" />
- </miniIconsPresenter>
-
- <miniIconsPresenter x="0" y="0" name="_volume" width="16" height="16" iconRessourceName="volume">
- <handler name="oninit">
- _tip.setAttribute("labelid", parent.parent.isremote ? 1511 : 1512);
- </handler>
- <handler name="onclick">
- var volume = parent.parent.getStreamVolume();
-
- var sliderHeight = 120;
- var sliderX = this.getAttributeRelative('x',canvas) - 2;
- var pick = new lz.VolumeSlider(canvas, {
- height:sliderHeight,
- x:sliderX,
- y:(parent.getAttributeRelative('y',canvas) - sliderHeight/2),
- initialNumber:volume,
- videoObject:parent.parent
- });
- lz.ModeManager.makeModal(pick);
- </handler>
- <labelTooltip name="_tip" />
- </miniIconsPresenter>
-
- <miniIconsPresenter name="_minimize" iconRessourceName="btn_presenter_minimize">
- <handler name="onclick">
- this.parent.parent.minimize();
- </handler>
- <labelTooltip labelid="856" />
- </miniIconsPresenter>
-
- <miniIconsPresenter name="_maximize2" visibility="hidden" iconRessourceName="btn_presenter_maximize">
- <handler name="onclick">
- this.parent.parent.reminimize();
- </handler>
- <labelTooltip labelid="857" />
- </miniIconsPresenter>
-
- </view>
-
- <view name="_giveExclusiveAudioView" valign="middle" align="center" visible="false">
- <view name="_micButton" width="40" height="40" resource="mic_rsc" showhandcursor="true">
- <labelTooltip name="_toolTipTextExclusiveAudio" labelid="1386" />
- </view>
- </view>
-
- <method name="allowedExclusiveAudio">
- <![CDATA[
- return (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio)
- && this.clientVars.avsettings.indexOf('a') > -1;
- ]]>
- </method>
-
- <handler name="onmouseover">
- <![CDATA[
- if (this.isInterview || this.minimized) {
- return;
- }
- if (allowedExclusiveAudio()) {
- this._giveExclusiveAudioView._micButton._toolTipTextExclusiveAudio.doonmouseover();
- this._giveExclusiveAudioView.setAttribute("visible", true);
- }
- ]]>
- </handler>
-
- <handler name="onmouseout">
- <![CDATA[
- if (this.isInterview || this.minimized) {
- return;
- }
- if (allowedExclusiveAudio()) {
- this._giveExclusiveAudioView._micButton._toolTipTextExclusiveAudio.cleanHolder();
- this._giveExclusiveAudioView.setAttribute("visible", false);
- }
- ]]>
- </handler>
-
- <handler name="onclick">
- <![CDATA[
- if (allowedExclusiveAudio()) {
- this._giveExclusiveAudioView._micButton._toolTipTextExclusiveAudio.cleanHolder();
- this.confirmExclusiveAudio();
- }
- ]]>
- </handler>
-
- <dragstate name="dragger" />
- <resizestatemin name="rs" resize_min_width="70" resize_min_height="70" />
- <dragHelper name="dragHelper" />
-
- <animator name="_minimizeZoom" attribute="height" duration="750" to="20" started="false">
- <handler name="onstop" args="s">
- parent.reminimizeComplete();
- </handler>
- </animator>
-
- <handler name="onismoderator" reference="canvas" args="m">
- <![CDATA[
- if ($debug) Debug.write("###### ismoderator ", m);
-
- if (this.minimized) {
- this._loudness.setAttribute("x",this.width - 84 - (this.isShowMicMute ? 20 : 0));
- this._loudness.bringToFront();
- }
- ]]>
- </handler>
-
- <method name="confirmExclusiveAudio">
- var so:SharedObject = SharedObject.getLocal('userdata');
- var userData = so.data;
- var dontShowExclusiveAudioConfirmation = userData["dontShowExclusiveAudioConfirmation"];
- var exclusiveAudioListener = new Object();
- exclusiveAudioListener.sendNoConfirmation = function(none) {};
- exclusiveAudioListener.sendConfirmation = function(answer, remember) {
- if (answer) {
- canvas.thishib.giveExclusiveAudio(this.publicSID);
- if (remember) {
- userData["dontShowExclusiveAudioConfirmation"] = true;
- so.flush();
- }
- }
- };
- if (dontShowExclusiveAudioConfirmation == true) {
- exclusiveAudioListener.sendConfirmation(true, true);
- } else {
- new lz.confirmationSingle(canvas,{
- labelid:1428,
- labeliderror:1539,
- refObj:exclusiveAudioListener,
- showCheckBox:true});
- }
- </method>
-
- <!-- This will mute the Microphone only to the person that is speaking if the gain is set to zero NOBODY will hear 'em -->
- <method name="muteMicrophone" args="roomClientObj">
- <![CDATA[
- if ($debug) Debug.write("############ muteMicrophone ", roomClientObj.micMuted, roomClientObj.publicSID, this.publicSID);
-
- if (roomClientObj.publicSID == this.publicSID) {
- if ($debug) Debug.write("Set Mute for Client :: ", roomClientObj);
- if ($debug) Debug.write("############ SET GAIN " + roomClientObj.micMuted);
- this._chatvideoinner._videostream.muteMicro(roomClientObj.micMuted);
- this.isMutedByModerator = roomClientObj.micMuted;
- this.setMicMuted(roomClientObj.micMuted);
- }
- ]]>
- </method>
-
- <!-- This will mute it only locally, that means on other screens the user might be still online and loud -->
- <method name="silenceMicrophone" args="mute">
- <![CDATA[
- if ($debug) Debug.write("############ silenceMicrophone ", this.publicSID);
- if (this.publicSID == canvas.publicSID) {
- //self sound turned off
- canvas.thishib.switchMicMuted.publicSID = this.publicSID;
- canvas.thishib.switchMicMuted.mute = mute;
- canvas.thishib.switchMicMuted.doCall();
- if (!mute) {
- this._chatvideoinner._videostream.muteMicro(false);
- }
- } else {
- //disable this action for now
- if (!canvas.ismoderator) {
- new lz.labelerrorPopup(canvas,{errorlabelid:1409});
- return;
- }
- //you can not unmute it locally by putting sound to 100 cause the gain is set to zero globally in the micro of the sender!
- //so setting the sound/volume on the other remote clients has zero effect
- if (this.isMutedByModerator && !canvas.ismoderator) {
- //FIXME: That is not true, you could restart audio/video ...
- var errorlabelid = this.publicSID == canvas.publicSID ? 1387 : 1402;
- new lz.labelerrorPopup(canvas,{errorlabelid:errorlabelid});
- return;
- }
- if (canvas.ismoderator) {
- canvas.thishib.switchMicMuted.publicSID = this.publicSID;
- canvas.thishib.switchMicMuted.mute = mute;
- canvas.thishib.switchMicMuted.doCall();
- } else {
- this._chatvideoinner._videostream.setSoundVolume(mute ? 0 : 100);
- }
- }
- this.setMicMuted(mute);
- ]]>
- </method>
-
- <method name="setMicMuted" args="micMuted">
- <![CDATA[
- this.micMuted = micMuted;
- this._toolbar._mute._tip.setAttribute("labelid", micMuted ? "1406" : "1405");
- this._toolbar._mute._itemRsc.setAttribute('frame', micMuted ? 2 : 1);
- if (isMicrophonesRoom) {
- var label = canvas.getLabelName(micMuted ? 1435 : 1434);
- var color = micMuted ? canvas.getThemeColor('basebgcolorizer') : "0xFF6600";
- this._innertop.setAttribute('bgcolor', color);
- this._innerbottom.setAttribute('bgcolor', color);
- this._innerbottom.title.setAttribute('text', label);
- }
- ]]>
- </method>
-
- <method name="setStreamVolume" args="v">
- if ($debug) Debug.write("############ setStreamVolume ", v, this.publicSID);
- var stream = this._chatvideoinner._videostream;
- if (this.isremote) {
- stream.setSoundVolume(v);
- } else {
- stream.setAttribute('micGain', v);
- stream.micro.gain = v;
- if (0 == v) {
- this.setMicMuted(true);
- canvas.thishib.switchMicMuted.publicSID = this.publicSID;
- canvas.thishib.switchMicMuted.mute = true;
- canvas.thishib.switchMicMuted.doCall();
- } else if (micMuted) {
- this.silenceMicrophone(false);
- }
- }
- </method>
-
- <method name="getStreamVolume">
- var stream = this._chatvideoinner._videostream;
- return this.isremote ? Number(stream._ns.soundTransform.volume * 100) : stream.micro.gain;
- </method>
-
- <handler name="onheight" args="value">
- if (null == initRatio || !respectRatio) {
- return;
- }
- var videoHeight = value - this.videoInsetY - this.bottomBarHeight;
- var expectedVideoWidth = videoHeight * initRatio;
- var expectedPodWidth = expectedVideoWidth + this.videoInsetX;
- if (this.width != expectedPodWidth) {
- this.setAttribute("width", expectedPodWidth);
- }
- </handler>
-
- <handler name="onwidth" args="value">
- if (null == initRatio || !respectRatio) {
- return;
- }
- var videoWidth = value - this.videoInsetX;
- var expectedVideoHeight = videoWidth / initRatio;
- var expectedPodHeight = expectedVideoHeight + this.videoInsetY + this.bottomBarHeight;
- if (this.height != expectedPodHeight) {
- this.setAttribute("height", expectedPodHeight);
- }
- </handler>
- </class>
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+
+ <!--- Base container for a client, can be either: a remote-video (subscribing/playing a video) or a self-video (broadcasting
+ a cam/mic) -->
+ <class name="baseVideoObject" extends="view" bgcolor="0x000000" width="122" height="101">
+
+ <switch>
+ <when property="$as3">
+ <passthrough>
+ import flash.filters.DropShadowFilter;
+ import flash.media.*
+ import flash.net.SharedObject;
+ </passthrough>
+ </when>
+ </switch>
+
+ <!--- @keywords private -->
+ <attribute name="chatpartnername" value="" type="string" />
+ <!--- @keywords private -->
+ <attribute name="showUserProfilePic" type="boolean" value="false" />
+
+ <!--- color of this user, this is the color the user will also use for his chat-color -->
+ <attribute name="usercolor" value="0" type="number" />
+
+ <!--- publicSID is a hash-value to identify a user -->
+ <attribute name="publicSID" value="" type="string" />
+
+ <!--- micMuted indicates if the microphone is currently turned sound or gain to 0 -->
+ <attribute name="micMuted" value="false" type="boolean" />
+
+ <!--- @keywords private -->
+ <attribute name="isremote" value="true" type="boolean" />
+
+ <!--- @keywords private -->
+ <attribute name="clientVars" value="null" />
+
+ <!--- @keywords private -->
+ <attribute name="isResizing" value="false" type="boolean" />
+
+ <!--- @keywords private -->
+ <attribute name="isInterview" value="false" type="boolean" />
+
+ <attribute name="respectRatio" value="true" type="boolean" />
+
+ <attribute name="minimized" value="false" type="boolean" />
+
+ <attribute name="custom" value="false" type="boolean" />
+
+ <attribute name="initH" value="40" type="number" />
+ <attribute name="initW" value="40" type="number" />
+
+ <attribute name="isShowMicMute" value="false" type="boolean" />
+
+ <attribute name="isMutedByModerator" value="false" type="boolean" />
+
+ <attribute name="isMicrophonesRoom" value="false" type="boolean" />
+
+ <attribute name="lastPositiveVolume" type="number" value="50" />
+
+ <!-- Initial stream ratio: width / height -->
+ <attribute name="initRatio" type="number" value="null" />
+ <attribute name="initialHeight" value="$once{ this.height }" type="number" />
+
+ <handler name="onisremote" args="r">
+ this.isremote = r;
+ </handler>
+
+ <handler name="oninit">
+ <![CDATA[
+ this.clientVars = new Array();
+ this.clientVars['User']='No User Connected';
+
+ if (this.isInterview) {
+ this._toolbar._minimize.setAttribute("visibility","hidden");
+ this._resizeview.setAttribute("visibility","hidden");
+ this._innerbottom.setAttribute("visibility","hidden");
+ return;
+ }
+
+ if (this.custom) {
+ this._toolbar._minimize.setAttribute("visibility","hidden");
+ this._resizeview.setAttribute("visibility","hidden");
+ this._toolbar.setAttribute("visibility","hidden");
+ this._resizeview.setAttribute("visibility","hidden");
+ this._loudness.setAttribute("visibility","hidden");
+ this._innertop.setAttribute("visibility","hidden");
+ this._innerbottom.setAttribute("visibility","hidden");
+ }
+ this.setShadow();
+
+ if (this.publicSID == canvas.publicSID) {
+ this._toolbar._resync._tip.setAttribute("labelid",610);
+ }
+ this._giveExclusiveAudioView.bringToFront();
+
+ this.isMicrophonesRoom = canvas.currentRoomObj.showMicrophoneStatus;
+ if (isMicrophonesRoom) {
+ this._innertop.setAttribute("bgcolor", "0xFF6600");
+ this._innerbottom.setAttribute("bgcolor", "0xFF6600");
+ } else {
+ this._innerbottom.setAttribute("visibility", "hidden");
+ }
+ ]]>
+ </handler>
+
+ <handler name="ony">
+ <![CDATA[
+ if (this.isInterview || this.custom || canvas.currentRoomObj.hideWhiteboard) {
+ return;
+ }
+ var bounds = this.getBounds();
+ var parentBounds = canvas.getBounds();
+ if (bounds.y < 0) {
+ this.setAttribute('y',0);
+ }
+ if (bounds.y > (parentBounds.height - bounds.height)) {
+ this.setAttribute('y', parentBounds.height - bounds.height );
+ }
+ ]]>
+ </handler>
+
+ <handler name="onx">
+ <![CDATA[
+ if (this.isInterview || this.custom) {
+ return;
+ }
+
+ var bounds = this.getBounds();
+ var parentBounds = canvas.getBounds();
+ if (bounds.x < 0) {
+ this.setAttribute('x',0);
+ }
+
+ if (bounds.x > (parentBounds.width - bounds.width)) {
+ this.setAttribute('x', parentBounds.width - bounds.width );
+ }
+ ]]>
+ </handler>
+
+ <method name="setShadow">
+ <![CDATA[
+ if (this.isinited){
+ this.normalMC = this.getDisplayObject();
+ //if($debug) Debug.write(this.normalMC);
+ //if($debug) Debug.write("this.normalMC: ",this.normalMC);
+ //if($debug) Debug.write("this: ",this);
+ this.displacementMap = new flash.filters.DropShadowFilter();
+ this.normalMC.filters = [this.displacementMap];
+ }
+ ]]>
+ </method>
+
+ <!-- respect ratio and keep minimum width / height -->
+ <method name="setItemContraintsWidth" args="unused">
+ <![CDATA[
+ if (!this.respectRatio) {
+ return;
+ }
+ var h=this.width * this.initH/this.initW;
+ h=((h < this.initH ) ? initH : h);
+
+ if ($debug) Debug.write("setItemContraintsWidth",this.respectRatio,'orig',this.height,this.width,'new h',h);
+
+ this.setAttribute("height",h);
+ ]]>
+ </method>
+
+ <method name="setItemContraintsHeight" args="unused">
+ <![CDATA[
+ if (!this.respectRatio) {
+ return;
+ }
+ var w=this.height * this.initW/this.initH;
+ w=((w < this.initW ) ? initW : w);
+
+ if ($debug) Debug.write("setItemContraintsHeight",this.respectRatio,'orig',this.height,this.width,'new w',w);
+
+ this.setAttribute("width",w);
+ ]]>
+ </method>
+
+ <method name="updateAVSettingsSymbol" args="rcl">
+ <![CDATA[
+ //FIXME: Set a Symbol whereve this Client is Audio(only)/Video(only), both or Profile Picture
+ if ($debug) Debug.warn("updateAVSettingsSymbol TODO ", rcl, this);
+ switch (rcl.avsettings) {
+ case "av":
+ this.setDefaultVideoSize(rcl.VWidth, rcl.VHeight);
+ this.setAttribute("visible", true);
+ this._toolbar._mute.setAttribute("visible", true);
+ this._toolbar._volume.setAttribute("visible", true);
+ if(!canvas.isInterview && this.minimized) {
+ this.reminimize();
+ }
+ this.deleteVideoConfProfilePic();
+ break;
+ case "a":
+ this.setAttribute("visible", true);
+ this._toolbar._mute.setAttribute("visible", true);
+ this._toolbar._volume.setAttribute("visible", true);
+ if(!canvas.isInterview && this.minimized) {
+ this.reminimize();
+ }
+ this.setVideouserProfilePic(rcl);
+ break;
+ case "v":
+ this.setDefaultVideoSize(rcl.VWidth, rcl.VHeight);
+ this.setAttribute("visible", true);
+ this._toolbar._mute.setAttribute("visible", false);
+ this._toolbar._volume.setAttribute("visible", false);
+ if(!canvas.isInterview && this.minimized) {
+ this.reminimize();
+ }
+ this.deleteVideoConfProfilePic();
+ break;
+ case "n":
+ if ($debug) Debug.write("Do not Publish A/V");
+ //Prevent from Hiding the Box in Event Modus
+ if (canvas.thishib.modus == "conference") {
+ this.setAttribute("visible", false);
+ }
+ break;
+ default:
+ if ($debug) Debug.warn("no valid device Setup chosen");
+ break;
+ }
+ ]]>
+ </method>
+
+ <method name="doResize" args="bool">
+ if ($debug) Debug.write("doResize",bool);
+ if(bool) {
+ dragHelper.create();
+ } else {
+ dragHelper.remove();
+ }
+ if (this.isInterview || this.custom) {
+ return;
+ }
+
+ if (bool) {
+ this.isResizing = true;
+ this.rs.apply();
+ } else {
+ this.isResizing = false;
+ this.rs.remove();
+ }
+ </method>
+
+ <!--- resets all values and stops the streaming -->
+ <method name="resetValues">
+ <![CDATA[
+ if ($debug) Debug.write("resetValues: ", this.isremote);
+ this.clientVars = null;
+ if (this.isremote) {
+ this._chatvideoinner._videostream.restart();
+ } else {
+ deleteVideoConfProfilePic();
+ this._chatvideoinner._videostream._stop();
+ }
+ ]]>
+ </method>
+
+ <method name="setVideouserProfilePic" args="value">
+ if ($debug) Debug.write("### setVideouserProfilePic ",value);
+ this.deleteVideoConfProfilePic();
+ new lz.videoUserProfilePicSWF10(this._chatvideoinner,{name:'userProfilePic',value:value});
+ this.showUserProfilePic = true;
+ </method>
+
+ <method name="deleteVideoConfProfilePic">
+ if ($debug) Debug.write("### deleteVideoConfProfilePic ###");
+ if ($debug) Debug.write("delete ",this.showUserProfilePic);
+ if (this.showUserProfilePic) {
+ this._chatvideoinner.userProfilePic.destroy();
+ this.showUserProfilePic = false;
+ }
+ </method>
+
+ <!--- @keywords private -->
+ <method name="_startDragState" args="obj">
+ if (this.isInterview || this.custom) {
+ return;
+ }
+
+ dragHelper.create();
+
+ this.bringToFront();
+ parent.bringToFront();
+ this.dragger.apply();
+ </method>
+
+ <!--- @keywords private -->
+ <method name="_removeDragState" args="obj">
+ <![CDATA[
+ lz.Cursor.unlock();
+
+ if (this.x < 0) {
+ this.setAttribute("x",20);
+ }
+
+ if (this.y < 0) {
+ this.setAttribute("y",20);
+ }
+
+ if (this.x+this.width > parent.width) {
+ this.setAttribute("x",parent.width - this.width - 20);
+ }
+
+ if (this.y+this.height > parent.height) {
+ this.setAttribute("y",parent.height - this.height - 20);
+ }
+ dragHelper.remove();
+ this.dragger.remove();
+ ]]>
+ </method>
+
+ <method name="minimize">
+ <![CDATA[
+ this.respectRatio = false;
+
+ this.setAttribute("minimized",true);
+
+ this._toolbar._minimize.setAttribute("visibility","hidden");
+ this._toolbar._maximize2.setAttribute("visibility","visible");
+
+ for (var eg in this.subviews) {
+ if (this.subviews[eg].name != "_toolbar"
+ && this.subviews[eg].name != "_innertop"
+ && this.subviews[eg].name != "_loudness") {
+ this.subviews[eg].setAttribute("visibility","hidden");
+ }
+ }
+
+ this._loudness.setAttribute("x",this.width - 84 - (this.isShowMicMute ? 20 : 0));
+ this._loudness.bringToFront();
+
+ this.initialHeight = this.height;
+ //this.setAttribute("height",20);
+ this._minimizeZoom.setAttribute("to",20);
+ this._minimizeZoom.setAttribute('started', true);
+ ]]>
+ </method>
+
+ <method name="reminimize">
+ <![CDATA[
+ this.setAttribute("minimized",false);
+
+ this._toolbar._minimize.setAttribute("visibility","visible");
+ this._toolbar._maximize2.setAttribute("visibility","hidden");
+
+ this._loudness.setAttribute("x",1);
+
+ //this.setAttribute("height",this.initialHeight);
+ if ($debug) Debug.write("this.initialHeight ",this.initialHeight);
+ this._minimizeZoom.setAttribute("to",this.initialHeight);
+ this._minimizeZoom.setAttribute('started', true);
+ ]]>
+ </method>
+
+ <method name="reminimizeComplete">
+ <![CDATA[
+ if (!this.minimized) {
+ for (var eg in this.subviews) {
+ if (this.subviews[eg].name != "_toolbar"
+ && this.subviews[eg].name != "_innertop"
+ && this.subviews[eg].name != "_loudness"
+ && this.subviews[eg].name != "_innerbottom") {
+ this.subviews[eg].setAttribute("visibility","visible");
+ }
+ }
+ if (isMicrophonesRoom) {
+ this._innerbottom.setAttribute("visibility", "visible");
+ }
+ this.respectRatio = true;
+ }
+ ]]>
+ </method>
+
+ <view name="_innertop" width="${parent.width-2 }" height="18" x="1" y="1"
+ bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+ <text text="${ parent.parent.chatpartnername }" onmousedown="parent.parent._startDragState(this)"
+ onmouseup="parent.parent._removeDragState(this)"
+ width="${ parent.width-2 }" fgcolor="white" fontsize="9">
+ <handler name="onmouseover">
+ //cursor="arrow_draw_panel_cursor"
+ lz.Cursor.setCursorGlobal("arrow_draw_panel_cursor");
+ </handler>
+
+ <handler name="onmouseout">
+ lz.Cursor.unlock();
+ </handler>
+ </text>
+ </view>
+
+ <view name="_innerbottom" width="${parent.width - 2}" x="1" y="${parent.height - 19}" height="18"
+ bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+ <text text="${canvas.getLabelName(1434)}" width="${ parent.width-2 }" fgcolor="white" name="title" fontsize="9" />
+ </view>
+
+ <view name="_loudness" x="1" visible="${parent.isremote}" y="${parent.height - 20 - ((parent._innerbottom.visible) ? 18 : 0) }">
+ <method name="setSpeaking" args="bool">
+ this.loudness.setAttribute('opacity', bool ? 1 : 0.2);
+ </method>
+ <view x="2" y="2" name="loudness" resource="speaking" opacity="0.2" onmouseover="" onmouseout="">
+ <handler name="onclick">
+ <![CDATA[
+ if (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio) {
+ parent.parent.confirmExclusiveAudio();
+ } else {
+ new lz.labelerrorPopup(canvas,{errorlabelid:1478});
+ }
+ ]]>
+ </handler>
+ <labelTooltip inittwice="true" labelid="372" />
+ </view>
+ </view>
+
+ <view name="_resizeview" x="${ this.parent.width - 16 }" valign="bottom" resource="explorer_resize_rsc" cursor="explorer_resizemouse_rsc"
+ onmousedown="this.parent.doResize(true)" onmouseup="this.parent.doResize(false)">
+ <handler name="oninit">
+ //if ($debug) Debug.write("setTint");
+ //TODO: Fix this, does not work at the moment
+ //canvas.protocol + '://code.google.com/p/openmeetings/issues/detail?id=470
+ this.setAttribute("color", canvas.getThemeColor('baseMousecolorizer'));
+ </handler>
+ </view>
+
+ <method name="resync">
+ resetValues();
+ if (!isremote) {
+ canvas.commonVideoViewContent.removeVideoByUser(this.publicSID);
+ canvas.commonVideoViewContent._startAvBroadcast(true);
+ }
+ </method>
+
+ <view name="_toolbar" x="${ parent.width-this.width-2 }" layout="axis:x;spacing:0" y="2">
+ <attribute name="isload" value="true" type="boolean" />
+
+ <miniIconsPresenter name="_resync" iconRessourceName="resyncuser_rsc">
+ <handler name="onclick">
+ parent.parent.resync();
+ </handler>
+ <labelTooltip name="_tip" labelid="540" />
+ </miniIconsPresenter>
+
+ <miniIconsPresenter name="_mute" width="16" height="16" iconRessourceName="mute_micro_btn_rsc">
+ <handler name="onclick">
+ parent.parent.silenceMicrophone(!parent.parent.micMuted);
+ </handler>
+ <labelTooltip name="_tip" labelid="1405" />
+ </miniIconsPresenter>
+
+ <miniIconsPresenter x="0" y="0" name="_volume" width="16" height="16" iconRessourceName="volume">
+ <handler name="oninit">
+ _tip.setAttribute("labelid", parent.parent.isremote ? 1511 : 1512);
+ </handler>
+ <handler name="onclick">
+ var volume = parent.parent.getStreamVolume();
+
+ var sliderHeight = 120;
+ var sliderX = this.getAttributeRelative('x',canvas) - 2;
+ var pick = new lz.VolumeSlider(canvas, {
+ height:sliderHeight,
+ x:sliderX,
+ y:(parent.getAttributeRelative('y',canvas) - sliderHeight/2),
+ initialNumber:volume,
+ videoObject:parent.parent
+ });
+ lz.ModeManager.makeModal(pick);
+ </handler>
+ <labelTooltip name="_tip" />
+ </miniIconsPresenter>
+
+ <miniIconsPresenter name="_minimize" iconRessourceName="btn_presenter_minimize">
+ <handler name="onclick">
+ this.parent.parent.minimize();
+ </handler>
+ <labelTooltip labelid="856" />
+ </miniIconsPresenter>
+
+ <miniIconsPresenter name="_maximize2" visibility="hidden" iconRessourceName="btn_presenter_maximize">
+ <handler name="onclick">
+ this.parent.parent.reminimize();
+ </handler>
+ <labelTooltip labelid="857" />
+ </miniIconsPresenter>
+
+ </view>
+
+ <view name="_giveExclusiveAudioView" valign="middle" align="center" visible="false">
+ <view name="_micButton" width="40" height="40" resource="mic_rsc" showhandcursor="true">
+ <labelTooltip name="_toolTipTextExclusiveAudio" labelid="1386" />
+ </view>
+ </view>
+
+ <method name="allowedExclusiveAudio">
+ <![CDATA[
+ return (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio)
+ && this.clientVars.avsettings.indexOf('a') > -1;
+ ]]>
+ </method>
+
+ <handler name="onmouseover">
+ <![CDATA[
+ if (this.isInterview || this.minimized) {
+ return;
+ }
+ if (allowedExclusiveAudio()) {
+ this._giveExclusiveAudioView._micButton._toolTipTextExclusiveAudio.doonmouseover();
+ this._giveExclusiveAudioView.setAttribute("visible", true);
+ }
+ ]]>
+ </handler>
+
+ <handler name="onmouseout">
+ <![CDATA[
+ if (this.isInterview || this.minimized) {
+ return;
+ }
+ if (allowedExclusiveAudio()) {
+ this._giveExclusiveAudioView._micButton._toolTipTextExclusiveAudio.cleanHolder();
+ this._giveExclusiveAudioView.setAttribute("visible", false);
+ }
+ ]]>
+ </handler>
+
+ <handler name="onclick">
+ <![CDATA[
+ if (allowedExclusiveAudio()) {
+ this._giveExclusiveAudioView._micButton._toolTipTextExclusiveAudio.cleanHolder();
+ this.confirmExclusiveAudio();
+ }
+ ]]>
+ </handler>
+
+ <dragstate name="dragger" />
+ <resizestatemin name="rs" resize_min_width="70" resize_min_height="70" />
+ <dragHelper name="dragHelper" />
+
+ <animator name="_minimizeZoom" attribute="height" duration="750" to="20" started="false">
+ <handler name="onstop" args="s">
+ parent.reminimizeComplete();
+ </handler>
+ </animator>
+
+ <handler name="onismoderator" reference="canvas" args="m">
+ <![CDATA[
+ if ($debug) Debug.write("###### ismoderator ", m);
+
+ if (this.minimized) {
+ this._loudness.setAttribute("x",this.width - 84 - (this.isShowMicMute ? 20 : 0));
+ this._loudness.bringToFront();
+ }
+ ]]>
+ </handler>
+
+ <method name="confirmExclusiveAudio">
+ var so:SharedObject = SharedObject.getLocal('userdata');
+ var userData = so.data;
+ var dontShowExclusiveAudioConfirmation = userData["dontShowExclusiveAudioConfirmation"];
+ var exclusiveAudioListener = new Object();
+ exclusiveAudioListener.sendNoConfirmation = function(none) {};
+ exclusiveAudioListener.sendConfirmation = function(answer, remember) {
+ if (answer) {
+ canvas.thishib.giveExclusiveAudio(this.publicSID);
+ if (remember) {
+ userData["dontShowExclusiveAudioConfirmation"] = true;
+ so.flush();
+ }
+ }
+ };
+ if (dontShowExclusiveAudioConfirmation == true) {
+ exclusiveAudioListener.sendConfirmation(true, true);
+ } else {
+ new lz.confirmationSingle(canvas,{
+ labelid:1428,
+ labeliderror:1539,
+ refObj:exclusiveAudioListener,
+ showCheckBox:true});
+ }
+ </method>
+
+ <!-- This will mute the Microphone only to the person that is speaking if the gain is set to zero NOBODY will hear 'em -->
+ <method name="muteMicrophone" args="roomClientObj">
+ <![CDATA[
+ if ($debug) Debug.write("############ muteMicrophone ", roomClientObj.micMuted, roomClientObj.publicSID, this.publicSID);
+
+ if (roomClientObj.publicSID == this.publicSID) {
+ if ($debug) Debug.write("Set Mute for Client :: ", roomClientObj);
+ if ($debug) Debug.write("############ SET GAIN " + roomClientObj.micMuted);
+ this._chatvideoinner._videostream.muteMicro(roomClientObj.micMuted);
+ this.isMutedByModerator = roomClientObj.micMuted;
+ this.setMicMuted(roomClientObj.micMuted);
+ }
+ ]]>
+ </method>
+
+ <!-- This will mute it only locally, that means on other screens the user might be still online and loud -->
+ <method name="silenceMicrophone" args="mute">
+ <![CDATA[
+ if ($debug) Debug.write("############ silenceMicrophone ", this.publicSID);
+ if (this.publicSID == canvas.publicSID) {
+ //self sound turned off
+ canvas.thishib.switchMicMuted.publicSID = this.publicSID;
+ canvas.thishib.switchMicMuted.mute = mute;
+ canvas.thishib.switchMicMuted.doCall();
+ if (!mute) {
+ this._chatvideoinner._videostream.muteMicro(false);
+ }
+ } else {
+ //disable this action for now
+ if (!canvas.ismoderator) {
+ new lz.labelerrorPopup(canvas,{errorlabelid:1409});
+ return;
+ }
+ //you can not unmute it locally by putting sound to 100 cause the gain is set to zero globally in the micro of the sender!
+ //so setting the sound/volume on the other remote clients has zero effect
+ if (this.isMutedByModerator && !canvas.ismoderator) {
+ //FIXME: That is not true, you could restart audio/video ...
+ var errorlabelid = this.publicSID == canvas.publicSID ? 1387 : 1402;
+ new lz.labelerrorPopup(canvas,{errorlabelid:errorlabelid});
+ return;
+ }
+ if (canvas.ismoderator) {
+ canvas.thishib.switchMicMuted.publicSID = this.publicSID;
+ canvas.thishib.switchMicMuted.mute = mute;
+ canvas.thishib.switchMicMuted.doCall();
+ } else {
+ this._chatvideoinner._videostream.setSoundVolume(mute ? 0 : 100);
+ }
+ }
+ this.setMicMuted(mute);
+ ]]>
+ </method>
+
+ <method name="setMicMuted" args="micMuted">
+ <![CDATA[
+ this.micMuted = micMuted;
+ this._toolbar._mute._tip.setAttribute("labelid", micMuted ? "1406" : "1405");
+ this._toolbar._mute._itemRsc.setAttribute('frame', micMuted ? 2 : 1);
+ if (isMicrophonesRoom) {
+ var label = canvas.getLabelName(micMuted ? 1435 : 1434);
+ var color = micMuted ? canvas.getThemeColor('basebgcolorizer') : "0xFF6600";
+ this._innertop.setAttribute('bgcolor', color);
+ this._innerbottom.setAttribute('bgcolor', color);
+ this._innerbottom.title.setAttribute('text', label);
+ }
+ ]]>
+ </method>
+
+ <method name="setStreamVolume" args="v">
+ if ($debug) Debug.write("############ setStreamVolume ", v, this.publicSID);
+ var stream = this._chatvideoinner._videostream;
+ if (this.isremote) {
+ stream.setSoundVolume(v);
+ } else {
+ stream.setAttribute('micGain', v);
+ stream.micro.gain = v;
+ if (0 == v) {
+ this.setMicMuted(true);
+ canvas.thishib.switchMicMuted.publicSID = this.publicSID;
+ canvas.thishib.switchMicMuted.mute = true;
+ canvas.thishib.switchMicMuted.doCall();
+ } else if (micMuted) {
+ this.silenceMicrophone(false);
+ }
+ }
+ </method>
+
+ <method name="getStreamVolume">
+ var stream = this._chatvideoinner._videostream;
+ return this.isremote ? Number(stream._ns.soundTransform.volume * 100) : stream.micro.gain;
+ </method>
+
+ <handler name="onheight" args="value">
+ if (null == initRatio || !respectRatio) {
+ return;
+ }
+ var videoHeight = value - this.videoInsetY - this.bottomBarHeight;
+ var expectedVideoWidth = videoHeight * initRatio;
+ var expectedPodWidth = expectedVideoWidth + this.videoInsetX;
+ if (this.width != expectedPodWidth) {
+ this.setAttribute("width", expectedPodWidth);
+ }
+ </handler>
+
+ <handler name="onwidth" args="value">
+ if (null == initRatio || !respectRatio) {
+ return;
+ }
+ var videoWidth = value - this.videoInsetX;
+ var expectedVideoHeight = videoWidth / initRatio;
+ var expectedPodHeight = expectedVideoHeight + this.videoInsetY + this.bottomBarHeight;
+ if (this.height != expectedPodHeight) {
+ this.setAttribute("height", expectedPodHeight);
+ }
+ </handler>
+ </class>
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx b/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx
index 2ef2c35..875489d 100644
--- a/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx
+++ b/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx
@@ -1,499 +1,499 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<!-- #######################
- Class editRecordStream
-
- Description:
- This Class shows a window where you can alter you Video-/Microphone- Input-Resources
- and start to stream. The app could also use the default values for Cam/Mic but
- most users don't know how to alter this (weather in System-Control-Panel or by Right Clicking
- on the Flash-Screen and *>Preferences>Camera* )
- So I think it is better if Users are forced to choose something from this list
-
- -->
-
-<class name="editRecordStreamSWF10" extends="labelExplorerBox" labelid="51"
- width="680" height="540" x="14" y="-540" >
- <switch>
- <when property="$as3">
- <passthrough>
- import flash.events.StatusEvent;
- import flash.media.Camera;
- import flash.media.Microphone;
- </passthrough>
- </when>
- </switch>
-
- <attribute name="initY" value="40" type="number" />
-
- <!---
- if true the user will see the dialog no matter if he has choosen "do not show again" or not
- -->
- <attribute name="doDefaultAnimation" value="true" type="boolean" />
- <attribute name="cam_default_width" value="320" type="number" />
- <attribute name="cam_default_height" value="260" type="number" />
- <attribute name="lastRecorded" value="" type="string" />
- <attribute name="isRunning" value="false" type="boolean" />
- <attribute name="recordingsCounter" value="5" type="number" />
- <attribute name="timerIsRunning" value="false" type="boolean" />
- <attribute name="counterDelegate" value="null" />
- <attribute name="executeAttachCamera" value="false" type="boolean" />
-
- <method name="startTimer">
- this.timerIsRunning = true;
- this.timerWasUnmutedTheFirstTime = true;
- lz.Timer.addTimer( this.counterDelegate, 1000 );
- </method>
-
- <method name="count" args="calleeObj">
- if (this.recordingsCounter != 0){
- this.recordingsCounter -= 1;
- lz.Timer.resetTimer(this.counterDelegate, 1000);
-
- this._text._info.setAttribute("text",""+this.recordingsCounter+" sec");
- } else {
- this._text.setAttribute("visibility","hidden");
- this.doStop();
- this.timerIsRunning = false;
- lz.Timer.removeTimer(this.counterDelegate);
- this.doPlay();
- }
- </method>
-
- <method name="startTimerToCount">
- if (!this.timerIsRunning) {
- this.startTimer();
- }
- </method>
-
- <handler name="oninit">
- <![CDATA[
- if (canvas.editRecordStream != null) {
- canvas.editRecordStream.destroy();
- }
- canvas.editRecordStream = this;
-
- this.counterDelegate = new LzDelegate(this, "count");
-
- if ($debug) Debug.write("editrecordstream ###################### ");
-
- initItems();
- if (this.doDefaultAnimation && !canvas.isInterview) {
- this._chooseDeviceAnimation.setAttribute('started', true);
- } else {
- this.setAttribute("y", initY);
- }
- this.executeAttachCamera = true;
- this.attachCamera();
- ]]>
- </handler>
-
- <handler name="ondestroy">
- <![CDATA[
- if ($debug) Debug.write("editrecordstream::ondestroy ");
- cleanVideos();
- canvas.editRecordStream = null;
- ]]>
- </handler>
-
- <method name="storeAVsettings">
- canvas.commonVideoViewContent.storeAVsettings(
- this.availableCams.getValue()
- , this.availableMics.getValue()
- , this.cam_default_width
- , this.cam_default_height
- );
- </method>
-
- <method name="doStartRecording">
- <![CDATA[
- this._btnStartRecording.setAttribute("enabled",false);
- this._play.setAttribute("enabled",false);
- this.recordingsCounter = 5;
- this._text.setAttribute("visibility","visible");
- this._text._info.setAttribute("text","5 sec");
- this.isRunning = true;
-
- var videoview = this._video.content._publisher._chatvideoinner._videostream;
- var _micro = canvas.commonVideoViewContent.getMic(this.availableMics.getValue());
- var _camera = canvas.commonVideoViewContent.getCam(this.availableCams.getValue(), cam_default_width, cam_default_height);
- if ($debug) Debug.write(_camera, _micro);
-
- if ($debug && _camera != null) Debug.warn("_camera.muted ", _camera.muted);
- if ($debug && _micro != null) Debug.warn("_micro.muted ", _micro.muted);
- if ((_camera != null && !_camera.muted) || (_micro != null && !_micro.muted)) {
- this.startTimer();
- }
-
- //start recording of client stream
- var t = new Date();
- this.lastRecorded = "TEST_SETUP_"+t.getTime();
- this._video.content._publisher.setAttribute("visibility","visible");
- this._video.content._viewer.setAttribute("visibility","hidden");
- videoview.record(this.lastRecorded,_camera,_micro);
- ]]>
- </method>
-
- <method name="doPlay">
- <![CDATA[
- if (this.lastRecorded == "") {
- //Error - nothing recorded yet
- if ($debug) Debug.warn("Nothing to Play");
- } else {
- this._play.setAttribute("enabled",true);
- this._video.content._publisher.setAttribute("visibility","hidden");
- this._video.content._viewer.setAttribute("visibility","visible");
- var videoview = this._video.content._viewer._chatvideoinner._videostream;
- videoview.justPlayStream(this.lastRecorded+".flv",0);
- }
- ]]>
- </method>
-
- <method name="doStop">
- if (this.isRunning) {
- this.isRunning = false;
- var videoview = this._video.content._publisher._chatvideoinner._videostream;
- this._btnStartRecording.setAttribute("enabled",true);
- videoview._stop();
- this.doPlay();
- }
- var videoviewViewer = this._video.content._viewer._chatvideoinner._videostream;
- videoviewViewer._stop();
- </method>
-
- <animator name="_chooseDeviceAnimation" started="false" attribute="y" to="40" duration="750" />
-
- <labelText fontstyle="bold" labelid="758" width="${ parent.width-2 }" height="30" multiline="true" y="20" />
-
- <method name="fillDeviceList" args="list,combo,prop">
- <![CDATA[
- //Initialize and get eventually stored property
- var dev = canvas.commonVideoViewContent.getAvSetting(prop);
- if ($debug) Debug.write("fillDeviceList:: ", prop, dev);
-
- //Get all availible devices
- var foundStoredDev = null;
- combo.addItem(canvas.getLabelName(159), -1);
- if ("-1" == dev) {
- foundStoredDev = "-1";
- }
- for (var eg = 0; eg < list.length; ++eg) {
- combo.addItem(list[eg], eg);
- var r = "" + eg;
- if (r == dev) {
- foundStoredDev = r;
- }
- }
- return foundStoredDev;
- ]]>
- </method>
-
- <method name="selectListItem" args="combo, selected, select">
- if (selected != null) {
- combo.selectItem(selected);
- } else {
- combo.selectItemAt(select ? 1 : 0);
- }
- </method>
-
- <!--
- Initialize the default settings for cam and resolution and attach the camera
- after we have made sure the values are there one time
- -->
- <method name="initItems">
- <![CDATA[
- //fill list of Cameras
- var cameras = Camera.names;
- var foundStoredCam = fillDeviceList(cameras, availableCams, "cam");
- selectListItem(availableCams, foundStoredCam, cameras.length > 0);
-
- //fill list of Mics
- var mics = Microphone.names;
- var foundStoredMic = fillDeviceList(mics, availableMics, "mic");
- selectListItem(availableMics, foundStoredMic, mics.length > 0);
-
- // settings
- var addCams = !canvas.currentRoomObj.audioOnly && cameras.length > 0;
- var addMics = mics.length > 0;
- ]]>
- </method>
-
- <method name="attachCamera">
- <![CDATA[
- //Don't execute before combobox items are not initialized
- if (!this.executeAttachCamera) {
- if ($debug) Debug.write("Return, executeAttachCamera is false");
- return;
- }
-
- if (_video == undefined) {
- if ($debug) Debug.write("Return, video not yet ready");
- return;
- }
- _video.content._publisher.setAttribute("visible", true);
- _video.content._viewer.setAttribute("visible", false);
- var videoview = this._video.content._publisher._chatvideoinner._videostream;
- //stop will not call clear as there is no NetStream
- videoview._stop();
- videoview.clear();
- var _camera = canvas.commonVideoViewContent.getCam(availableCams.getValue(), cam_default_width, cam_default_height);
- if (_camera != null) {
- videoview.attachCamera(_camera);
- }
- ]]>
- </method>
-
- <method name="cleanVideos">
- if (_video == undefined) return;
- //make sure stop and clear is called, as the _stop method does not work for all
- //videoviews in the device settings.
- _video.content._publisher._chatvideoinner._videostream._stop();
- _video.content._viewer._chatvideoinner._videostream._stop();
- _video.content._publisher._chatvideoinner._videostream.clear();
- _video.content._viewer._chatvideoinner._videostream.clear();
- if ($debug) Debug.write("Cleaned up videos and free resources");
- </method>
-
- <method name="updateVisibility">
- <![CDATA[
- var camVisible = availableCams.getValue() > -1;
- var micVisible = availableMics.getValue() > -1;
- var textVisible = !camVisible && !micVisible;
- this._btnStartRecording.setAttribute("visible", camVisible || micVisible);
- this._video.setAttribute("visible", camVisible);
- this._play.setAttribute("visible", camVisible || micVisible);
- this._level_meter.setAttribute("visible", micVisible);
- this.infoTextNoAV.setAttribute("visible", textVisible);
- this.availibleResolutionsLabel.setAttribute("visible", ((canvas.isInterview) ? false : camVisible));
- this.availibleResolutionsWarning.setAttribute("visible", ((canvas.isInterview) ? false : camVisible));
- this.availibleResolutions.setAttribute("visible", ((canvas.isInterview) ? false : camVisible));
- ]]>
- </method>
-
- <labelText name="availableCamsLabel" labelid="52" fontsize="11" x="10" y="80" width="$once{ parent.width-20 }" />
- <resetCombobox fontsize="11" name="availableCams" x="10" y="100" width="280" editable="false">
- <handler name="onselect">
- parent.updateVisibility();
- parent.attachCamera();
- </handler>
- </resetCombobox>
-
- <labelText name="availableMicsLabel" labelid="53" fontsize="11" x="10" y="120" width="$once{ parent.width-20 }" />
- <resetCombobox fontsize="11" name="availableMics" x="10" y="140" width="280" editable="false">
- <handler name="onselect">
- parent.updateVisibility();
- </handler>
- </resetCombobox>
-
- <labelText name="infoTextNoAV" labelid="452" multiline="true" width="280"
- fontsize="11" x="10" y="164" visibility="hidden" />
-
- <labelText name="availibleResolutionsLabel" labelid="1429"
- fontsize="11" x="10" y="164" width="$once{ parent.width-20 }" />
-
- <view name="availibleResolutionsWarning" x="272" y="164"
- resource="warning_icon_popup_devices_rsc" clickable="true">
- <labelTooltip multiline="true" labelid="1430" />
- </view>
-
- <resetCombobox fontsize="11" name="availibleResolutions" x="10" shownitems="10"
- y="184" width="280" editable="false">
- <!--- @keywords private -->
- <attribute name="counter" value="0" />
- <handler name="oninit">
- <![CDATA[
- var i = getItemAt(0);
- if ($debug) Debug.write("oninit ", this.selected, this, i);
- if (!this.selected && !!i) {
- selectItemAt(0);
- onselect.sendEvent(i);
- }
- ]]>
- </handler>
- <handler name="onselect" args="item">
- <![CDATA[
- if (!canvas.isInterview) {
- if ($debug) Debug.write("availibleResolutions::onselect cam [W x H] ", item.cam_width, item.cam_height);
- parent.setAttribute("cam_default_width", item.cam_width);
- parent.setAttribute("cam_default_height", item.cam_height);
-
- var py = parent.y < 0 ? 5 : parent.y;
- var maxWidth = Math.min(600, canvas.width - parent.x - 10)
- , maxHeight = Math.min(500, canvas.height - py - 10)
- , newWidth = maxWidth, newHeight = maxHeight;
- if (item.cam_width > 240) {
- newWidth = maxWidth + item.cam_width - 240;
- }
- if (item.cam_height > 180) {
- newHeight = maxHeight + item.cam_height - 180;
- }
-
- if (newWidth + parent.x + 10 > canvas.width) {
- newWidth = maxWidth;
- }
- if (newHeight + py + 10 > canvas.height) {
- newHeight = maxHeight;
- }
- parent.setAttribute("width", newWidth);
- parent.setAttribute("height", newHeight);
- }
- parent.attachCamera();
- ]]>
- </handler>
- <textlistitem datapath="myConfigSet:/config/availableCameraResolutions/resolution" >
- <attribute name="cam_width" value="320" type="number" />
- <attribute name="cam_height" value="240" type="number" />
- <handler name="ondata">
- <![CDATA[
- //if ($debug) Debug.write("ondata ", this);
- var type = this.datapath.xpathQuery('@type');
- this.cam_width = Number(this.datapath.xpathQuery('@width'));
- this.cam_height = Number(this.datapath.xpathQuery('@height'));
- this.setAttribute("text", "" + this.cam_width + "x" + this.cam_height + " [" + type + "]");
- var isDefault = this.datapath.xpathQuery('@isDefault') == "true";
-
- var width = canvas.commonVideoViewContent.getAvSetting("width");
- var height = canvas.commonVideoViewContent.getAvSetting("height");
- if (!!width && !!height && width == this.cam_width && height == this.cam_height) {
- parent.selectItemAt(parent.counter);
- parent.onselect.sendEvent(this);
- parent.selected = this;
- } else if (isDefault) {
- if ($debug) Debug.write("Found default one ", type);
- parent.selectItemAt(parent.counter);
- parent.onselect.sendEvent(this);
- }
- parent.counter++;
- ]]>
- </handler>
- </textlistitem>
- </resetCombobox>
-
- <simpleLabelButton name="_btnStartRecording" labelid="775" width="140" x="150" y="220" height="28">
- <handler name="onclick">
- parent._level_meter.startLevel();
- parent.doStartRecording();
- </handler>
- </simpleLabelButton>
-
- <view x="340" y="60" name="_video" clip="true"
- width="${ parent.width-this.x-10 }" height="${ parent.height-260 }">
- <view name="content">
- <videoObjectTestBroadcast name="_publisher"
- width="${ parent.parent.parent.cam_default_width }"
- height="${ parent.parent.parent.cam_default_height }">
- <handler name="sendCameraStatus" args="camStatus">
- if ($debug) Debug.write("sendCameraStatus -1- ",camStatus);
- if (camStatus == "Camera.Unmuted") {
- parent.parent.parent.startTimerToCount();
- }
- </handler>
-
- <handler name="sendMicroStatus" args="micStatus">
- if ($debug) Debug.write("sendMicroStatus -1- ",micStatus);
- if (micStatus == "Microphone.Unmuted") {
- parent.parent.parent.startTimerToCount();
- }
- </handler>
- </videoObjectTestBroadcast>
-
- <videoObjectPlayTestBroadcast name="_viewer" visibility="hidden"
- width="${ parent.parent.parent.cam_default_width }"
- height="${ parent.parent.parent.cam_default_height }" />
- </view>
-
- <om_vscrollbar />
- <om_hscrollbar />
- </view>
-
- <view name="_text" x="340" y="60" width="240" height="180" visibility="hidden">
- <text name="_info" resize="true" bgcolor="0xFFFFFF" align="right" fontsize="12" fontstyle="bold" />
- </view>
-
- <simpleLabelButton name="_play" y="${ parent.height-166 }" x="490" enabled="false" width="90" labelid="764">
- <handler name="onclick">
- parent.doPlay();
- </handler>
- </simpleLabelButton>
-
- <view name="_level_meter" x="340" y="${ parent.height-190 }" width="240" height="20" clip="true" bgcolor="0x000000">
- <!--- Level delegate, used to track level changes.
- @keywords private -->
- <attribute name="_leveldel" value="$once{new LzDelegate(this, '_updateLevel')}"/>
-
- <method name="_updateLevel" args="no">
- <![CDATA[
- if (parent._video.content._publisher._chatvideoinner._videostream.micro == null) {
- return;
- }
- this.setNewLevel(parent._video.content._publisher._chatvideoinner._videostream.micro.activityLevel);
- ]]>
- </method>
-
- <method name="startLevel">
- this._leveldel.register(lz.Idle, "onidle");
- </method>
-
- <method name="resetNewLevel">
- this._leveldel.unregisterAll();
- this.setNewLevel(0);
- </method>
-
- <method name="setNewLevel" args="no">
- <![CDATA[
- var newLevel = (238 / 100) * no;
- this._over.setAttribute("width", 238 - newLevel);
- this._over.setAttribute("x", 1 + newLevel);
- ]]>
- </method>
-
- <view name="_bg" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" />
- <view name="_grip" resource="level_meter_rsc" x="1" y="1" />
- <view name="_over" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" />
- <labelText labelid="767" x="2" y="2" height="16" width="236" resize="false" />
- </view>
-
- <view y="${ parent.height-98 }" resource="test_setup_info_rsc" x="16" />
-
- <labelText fontstyle="bold" labelid="765" x="39" y="${ parent.height-100 }"
- width="${ parent.width-50 }" multiline="true" />
-
- <simpleLabelButton fontsize="11" labelid="918" x="${ parent.width-220 }" y="${ parent.height-50 }"
- height="28" width="100">
- <handler name="onclick">
- parent.cleanVideos();
- parent.close();
- </handler>
- </simpleLabelButton>
-
- <simpleLabelButton fontsize="11" labelid="144" x="${ parent.width-110 }" y="${ parent.height-50 }"
- height="28" width="100" >
- <handler name="onclick">
- parent.cleanVideos();
- parent.storeAVsettings();
- parent.close();
- </handler>
- </simpleLabelButton>
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<!-- #######################
+ Class editRecordStream
+
+ Description:
+ This Class shows a window where you can alter you Video-/Microphone- Input-Resources
+ and start to stream. The app could also use the default values for Cam/Mic but
+ most users don't know how to alter this (weather in System-Control-Panel or by Right Clicking
+ on the Flash-Screen and *>Preferences>Camera* )
+ So I think it is better if Users are forced to choose something from this list
+
+ -->
+
+<class name="editRecordStreamSWF10" extends="labelExplorerBox" labelid="51"
+ width="680" height="540" x="14" y="-540" >
+ <switch>
+ <when property="$as3">
+ <passthrough>
+ import flash.events.StatusEvent;
+ import flash.media.Camera;
+ import flash.media.Microphone;
+ </passthrough>
+ </when>
+ </switch>
+
+ <attribute name="initY" value="40" type="number" />
+
+ <!---
+ if true the user will see the dialog no matter if he has choosen "do not show again" or not
+ -->
+ <attribute name="doDefaultAnimation" value="true" type="boolean" />
+ <attribute name="cam_default_width" value="320" type="number" />
+ <attribute name="cam_default_height" value="260" type="number" />
+ <attribute name="lastRecorded" value="" type="string" />
+ <attribute name="isRunning" value="false" type="boolean" />
+ <attribute name="recordingsCounter" value="5" type="number" />
+ <attribute name="timerIsRunning" value="false" type="boolean" />
+ <attribute name="counterDelegate" value="null" />
+ <attribute name="executeAttachCamera" value="false" type="boolean" />
+
+ <method name="startTimer">
+ this.timerIsRunning = true;
+ this.timerWasUnmutedTheFirstTime = true;
+ lz.Timer.addTimer( this.counterDelegate, 1000 );
+ </method>
+
+ <method name="count" args="calleeObj">
+ if (this.recordingsCounter != 0){
+ this.recordingsCounter -= 1;
+ lz.Timer.resetTimer(this.counterDelegate, 1000);
+
+ this._text._info.setAttribute("text",""+this.recordingsCounter+" sec");
+ } else {
+ this._text.setAttribute("visibility","hidden");
+ this.doStop();
+ this.timerIsRunning = false;
+ lz.Timer.removeTimer(this.counterDelegate);
+ this.doPlay();
+ }
+ </method>
+
+ <method name="startTimerToCount">
+ if (!this.timerIsRunning) {
+ this.startTimer();
+ }
+ </method>
+
+ <handler name="oninit">
+ <![CDATA[
+ if (canvas.editRecordStream != null) {
+ canvas.editRecordStream.destroy();
+ }
+ canvas.editRecordStream = this;
+
+ this.counterDelegate = new LzDelegate(this, "count");
+
+ if ($debug) Debug.write("editrecordstream ###################### ");
+
+ initItems();
+ if (this.doDefaultAnimation && !canvas.isInterview) {
+ this._chooseDeviceAnimation.setAttribute('started', true);
+ } else {
+ this.setAttribute("y", initY);
+ }
+ this.executeAttachCamera = true;
+ this.attachCamera();
+ ]]>
+ </handler>
+
+ <handler name="ondestroy">
+ <![CDATA[
+ if ($debug) Debug.write("editrecordstream::ondestroy ");
+ cleanVideos();
+ canvas.editRecordStream = null;
+ ]]>
+ </handler>
+
+ <method name="storeAVsettings">
+ canvas.commonVideoViewContent.storeAVsettings(
+ this.availableCams.getValue()
+ , this.availableMics.getValue()
+ , this.cam_default_width
+ , this.cam_default_height
+ );
+ </method>
+
+ <method name="doStartRecording">
+ <![CDATA[
+ this._btnStartRecording.setAttribute("enabled",false);
+ this._play.setAttribute("enabled",false);
+ this.recordingsCounter = 5;
+ this._text.setAttribute("visibility","visible");
+ this._text._info.setAttribute("text","5 sec");
+ this.isRunning = true;
+
+ var videoview = this._video.content._publisher._chatvideoinner._videostream;
+ var _micro = canvas.commonVideoViewContent.getMic(this.availableMics.getValue());
+ var _camera = canvas.commonVideoViewContent.getCam(this.availableCams.getValue(), cam_default_width, cam_default_height);
+ if ($debug) Debug.write(_camera, _micro);
+
+ if ($debug && _camera != null) Debug.warn("_camera.muted ", _camera.muted);
+ if ($debug && _micro != null) Debug.warn("_micro.muted ", _micro.muted);
+ if ((_camera != null && !_camera.muted) || (_micro != null && !_micro.muted)) {
+ this.startTimer();
+ }
+
+ //start recording of client stream
+ var t = new Date();
+ this.lastRecorded = "TEST_SETUP_"+t.getTime();
+ this._video.content._publisher.setAttribute("visibility","visible");
+ this._video.content._viewer.setAttribute("visibility","hidden");
+ videoview.record(this.lastRecorded,_camera,_micro);
+ ]]>
+ </method>
+
+ <method name="doPlay">
+ <![CDATA[
+ if (this.lastRecorded == "") {
+ //Error - nothing recorded yet
+ if ($debug) Debug.warn("Nothing to Play");
+ } else {
+ this._play.setAttribute("enabled",true);
+ this._video.content._publisher.setAttribute("visibility","hidden");
+ this._video.content._viewer.setAttribute("visibility","visible");
+ var videoview = this._video.content._viewer._chatvideoinner._videostream;
+ videoview.justPlayStream(this.lastRecorded+".flv",0);
+ }
+ ]]>
+ </method>
+
+ <method name="doStop">
+ if (this.isRunning) {
+ this.isRunning = false;
+ var videoview = this._video.content._publisher._chatvideoinner._videostream;
+ this._btnStartRecording.setAttribute("enabled",true);
+ videoview._stop();
+ this.doPlay();
+ }
+ var videoviewViewer = this._video.content._viewer._chatvideoinner._videostream;
+ videoviewViewer._stop();
+ </method>
+
+ <animator name="_chooseDeviceAnimation" started="false" attribute="y" to="40" duration="750" />
+
+ <labelText fontstyle="bold" labelid="758" width="${ parent.width-2 }" height="30" multiline="true" y="20" />
+
+ <method name="fillDeviceList" args="list,combo,prop">
+ <![CDATA[
+ //Initialize and get eventually stored property
+ var dev = canvas.commonVideoViewContent.getAvSetting(prop);
+ if ($debug) Debug.write("fillDeviceList:: ", prop, dev);
+
+ //Get all availible devices
+ var foundStoredDev = null;
+ combo.addItem(canvas.getLabelName(159), -1);
+ if ("-1" == dev) {
+ foundStoredDev = "-1";
+ }
+ for (var eg = 0; eg < list.length; ++eg) {
+ combo.addItem(list[eg], eg);
+ var r = "" + eg;
+ if (r == dev) {
+ foundStoredDev = r;
+ }
+ }
+ return foundStoredDev;
+ ]]>
+ </method>
+
+ <method name="selectListItem" args="combo, selected, select">
+ if (selected != null) {
+ combo.selectItem(selected);
+ } else {
+ combo.selectItemAt(select ? 1 : 0);
+ }
+ </method>
+
+ <!--
+ Initialize the default settings for cam and resolution and attach the camera
+ after we have made sure the values are there one time
+ -->
+ <method name="initItems">
+ <![CDATA[
+ //fill list of Cameras
+ var cameras = Camera.names;
+ var foundStoredCam = fillDeviceList(cameras, availableCams, "cam");
+ selectListItem(availableCams, foundStoredCam, cameras.length > 0);
+
+ //fill list of Mics
+ var mics = Microphone.names;
+ var foundStoredMic = fillDeviceList(mics, availableMics, "mic");
+ selectListItem(availableMics, foundStoredMic, mics.length > 0);
+
+ // settings
+ var addCams = !canvas.currentRoomObj.audioOnly && cameras.length > 0;
+ var addMics = mics.length > 0;
+ ]]>
+ </method>
+
+ <method name="attachCamera">
+ <![CDATA[
+ //Don't execute before combobox items are not initialized
+ if (!this.executeAttachCamera) {
+ if ($debug) Debug.write("Return, executeAttachCamera is false");
+ return;
+ }
+
+ if (_video == undefined) {
+ if ($debug) Debug.write("Return, video not yet ready");
+ return;
+ }
+ _video.content._publisher.setAttribute("visible", true);
+ _video.content._viewer.setAttribute("visible", false);
+ var videoview = this._video.content._publisher._chatvideoinner._videostream;
+ //stop will not call clear as there is no NetStream
+ videoview._stop();
+ videoview.clear();
+ var _camera = canvas.commonVideoViewContent.getCam(availableCams.getValue(), cam_default_width, cam_default_height);
+ if (_camera != null) {
+ videoview.attachCamera(_camera);
+ }
+ ]]>
+ </method>
+
+ <method name="cleanVideos">
+ if (_video == undefined) return;
+ //make sure stop and clear is called, as the _stop method does not work for all
+ //videoviews in the device settings.
+ _video.content._publisher._chatvideoinner._videostream._stop();
+ _video.content._viewer._chatvideoinner._videostream._stop();
+ _video.content._publisher._chatvideoinner._videostream.clear();
+ _video.content._viewer._chatvideoinner._videostream.clear();
+ if ($debug) Debug.write("Cleaned up videos and free resources");
+ </method>
+
+ <method name="updateVisibility">
+ <![CDATA[
+ var camVisible = availableCams.getValue() > -1;
+ var micVisible = availableMics.getValue() > -1;
+ var textVisible = !camVisible && !micVisible;
+ this._btnStartRecording.setAttribute("visible", camVisible || micVisible);
+ this._video.setAttribute("visible", camVisible);
+ this._play.setAttribute("visible", camVisible || micVisible);
+ this._level_meter.setAttribute("visible", micVisible);
+ this.infoTextNoAV.setAttribute("visible", textVisible);
+ this.availibleResolutionsLabel.setAttribute("visible", ((canvas.isInterview) ? false : camVisible));
+ this.availibleResolutionsWarning.setAttribute("visible", ((canvas.isInterview) ? false : camVisible));
+ this.availibleResolutions.setAttribute("visible", ((canvas.isInterview) ? false : camVisible));
+ ]]>
+ </method>
+
+ <labelText name="availableCamsLabel" labelid="52" fontsize="11" x="10" y="80" width="$once{ parent.width-20 }" />
+ <resetCombobox fontsize="11" name="availableCams" x="10" y="100" width="280" editable="false">
+ <handler name="onselect">
+ parent.updateVisibility();
+ parent.attachCamera();
+ </handler>
+ </resetCombobox>
+
+ <labelText name="availableMicsLabel" labelid="53" fontsize="11" x="10" y="120" width="$once{ parent.width-20 }" />
+ <resetCombobox fontsize="11" name="availableMics" x="10" y="140" width="280" editable="false">
+ <handler name="onselect">
+ parent.updateVisibility();
+ </handler>
+ </resetCombobox>
+
+ <labelText name="infoTextNoAV" labelid="452" multiline="true" width="280"
+ fontsize="11" x="10" y="164" visibility="hidden" />
+
+ <labelText name="availibleResolutionsLabel" labelid="1429"
+ fontsize="11" x="10" y="164" width="$once{ parent.width-20 }" />
+
+ <view name="availibleResolutionsWarning" x="272" y="164"
+ resource="warning_icon_popup_devices_rsc" clickable="true">
+ <labelTooltip multiline="true" labelid="1430" />
+ </view>
+
+ <resetCombobox fontsize="11" name="availibleResolutions" x="10" shownitems="10"
+ y="184" width="280" editable="false">
+ <!--- @keywords private -->
+ <attribute name="counter" value="0" />
+ <handler name="oninit">
+ <![CDATA[
+ var i = getItemAt(0);
+ if ($debug) Debug.write("oninit ", this.selected, this, i);
+ if (!this.selected && !!i) {
+ selectItemAt(0);
+ onselect.sendEvent(i);
+ }
+ ]]>
+ </handler>
+ <handler name="onselect" args="item">
+ <![CDATA[
+ if (!canvas.isInterview) {
+ if ($debug) Debug.write("availibleResolutions::onselect cam [W x H] ", item.cam_width, item.cam_height);
+ parent.setAttribute("cam_default_width", item.cam_width);
+ parent.setAttribute("cam_default_height", item.cam_height);
+
+ var py = parent.y < 0 ? 5 : parent.y;
+ var maxWidth = Math.min(600, canvas.width - parent.x - 10)
+ , maxHeight = Math.min(500, canvas.height - py - 10)
+ , newWidth = maxWidth, newHeight = maxHeight;
+ if (item.cam_width > 240) {
+ newWidth = maxWidth + item.cam_width - 240;
+ }
+ if (item.cam_height > 180) {
+ newHeight = maxHeight + item.cam_height - 180;
+ }
+
+ if (newWidth + parent.x + 10 > canvas.width) {
+ newWidth = maxWidth;
+ }
+ if (newHeight + py + 10 > canvas.height) {
+ newHeight = maxHeight;
+ }
+ parent.setAttribute("width", newWidth);
+ parent.setAttribute("height", newHeight);
+ }
+ parent.attachCamera();
+ ]]>
+ </handler>
+ <textlistitem datapath="myConfigSet:/config/availableCameraResolutions/resolution" >
+ <attribute name="cam_width" value="320" type="number" />
+ <attribute name="cam_height" value="240" type="number" />
+ <handler name="ondata">
+ <![CDATA[
+ //if ($debug) Debug.write("ondata ", this);
+ var type = this.datapath.xpathQuery('@type');
+ this.cam_width = Number(this.datapath.xpathQuery('@width'));
+ this.cam_height = Number(this.datapath.xpathQuery('@height'));
+ this.setAttribute("text", "" + this.cam_width + "x" + this.cam_height + " [" + type + "]");
+ var isDefault = this.datapath.xpathQuery('@isDefault') == "true";
+
+ var width = canvas.commonVideoViewContent.getAvSetting("width");
+ var height = canvas.commonVideoViewContent.getAvSetting("height");
+ if (!!width && !!height && width == this.cam_width && height == this.cam_height) {
+ parent.selectItemAt(parent.counter);
+ parent.onselect.sendEvent(this);
+ parent.selected = this;
+ } else if (isDefault) {
+ if ($debug) Debug.write("Found default one ", type);
+ parent.selectItemAt(parent.counter);
+ parent.onselect.sendEvent(this);
+ }
+ parent.counter++;
+ ]]>
+ </handler>
+ </textlistitem>
+ </resetCombobox>
+
+ <simpleLabelButton name="_btnStartRecording" labelid="775" width="140" x="150" y="220" height="28">
+ <handler name="onclick">
+ parent._level_meter.startLevel();
+ parent.doStartRecording();
+ </handler>
+ </simpleLabelButton>
+
+ <view x="340" y="60" name="_video" clip="true"
+ width="${ parent.width-this.x-10 }" height="${ parent.height-260 }">
+ <view name="content">
+ <videoObjectTestBroadcast name="_publisher"
+ width="${ parent.parent.parent.cam_default_width }"
+ height="${ parent.parent.parent.cam_default_height }">
+ <handler name="sendCameraStatus" args="camStatus">
+ if ($debug) Debug.write("sendCameraStatus -1- ",camStatus);
+ if (camStatus == "Camera.Unmuted") {
+ parent.parent.parent.startTimerToCount();
+ }
+ </handler>
+
+ <handler name="sendMicroStatus" args="micStatus">
+ if ($debug) Debug.write("sendMicroStatus -1- ",micStatus);
+ if (micStatus == "Microphone.Unmuted") {
+ parent.parent.parent.startTimerToCount();
+ }
+ </handler>
+ </videoObjectTestBroadcast>
+
+ <videoObjectPlayTestBroadcast name="_viewer" visibility="hidden"
+ width="${ parent.parent.parent.cam_default_width }"
+ height="${ parent.parent.parent.cam_default_height }" />
+ </view>
+
+ <om_vscrollbar />
+ <om_hscrollbar />
+ </view>
+
+ <view name="_text" x="340" y="60" width="240" height="180" visibility="hidden">
+ <text name="_info" resize="true" bgcolor="0xFFFFFF" align="right" fontsize="12" fontstyle="bold" />
+ </view>
+
+ <simpleLabelButton name="_play" y="${ parent.height-166 }" x="490" enabled="false" width="90" labelid="764">
+ <handler name="onclick">
+ parent.doPlay();
+ </handler>
+ </simpleLabelButton>
+
+ <view name="_level_meter" x="340" y="${ parent.height-190 }" width="240" height="20" clip="true" bgcolor="0x000000">
+ <!--- Level delegate, used to track level changes.
+ @keywords private -->
+ <attribute name="_leveldel" value="$once{new LzDelegate(this, '_updateLevel')}"/>
+
+ <method name="_updateLevel" args="no">
+ <![CDATA[
+ if (parent._video.content._publisher._chatvideoinner._videostream.micro == null) {
+ return;
+ }
+ this.setNewLevel(parent._video.content._publisher._chatvideoinner._videostream.micro.activityLevel);
+ ]]>
+ </method>
+
+ <method name="startLevel">
+ this._leveldel.register(lz.Idle, "onidle");
+ </method>
+
+ <method name="resetNewLevel">
+ this._leveldel.unregisterAll();
+ this.setNewLevel(0);
+ </method>
+
+ <method name="setNewLevel" args="no">
+ <![CDATA[
+ var newLevel = (238 / 100) * no;
+ this._over.setAttribute("width", 238 - newLevel);
+ this._over.setAttribute("x", 1 + newLevel);
+ ]]>
+ </method>
+
+ <view name="_bg" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" />
+ <view name="_grip" resource="level_meter_rsc" x="1" y="1" />
+ <view name="_over" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" />
+ <labelText labelid="767" x="2" y="2" height="16" width="236" resize="false" />
+ </view>
+
+ <view y="${ parent.height-98 }" resource="test_setup_info_rsc" x="16" />
+
+ <labelText fontstyle="bold" labelid="765" x="39" y="${ parent.height-100 }"
+ width="${ parent.width-50 }" multiline="true" />
+
+ <simpleLabelButton fontsize="11" labelid="918" x="${ parent.width-220 }" y="${ parent.height-50 }"
+ height="28" width="100">
+ <handler name="onclick">
+ parent.cleanVideos();
+ parent.close();
+ </handler>
+ </simpleLabelButton>
+
+ <simpleLabelButton fontsize="11" labelid="144" x="${ parent.width-110 }" y="${ parent.height-50 }"
+ height="28" width="100" >
+ <handler name="onclick">
+ parent.cleanVideos();
+ parent.storeAVsettings();
+ parent.close();
+ </handler>
+ </simpleLabelButton>
+</class>
+
+</library>
[03/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
index c61c7d7..992707d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
@@ -1,128 +1,128 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.util;
-
-import java.util.UUID;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.Page;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.behavior.AbstractAjaxBehavior;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
-import org.apache.wicket.markup.head.PriorityHeaderItem;
-import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
-import org.apache.wicket.request.resource.ContentDisposition;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.resource.IResourceStream;
-
-/**
- * see: <a href="https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow">
- * https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow</href>
- *
- */
-public class AjaxDownload extends AbstractAjaxBehavior {
- private static final long serialVersionUID = 1L;
- private boolean addAntiCache;
- private String fileName;
- private IResourceStream resourceStream;
- private final String iframeId;
-
- public AjaxDownload() {
- this(true);
- }
-
- public AjaxDownload(boolean addAntiCache) {
- super();
- this.addAntiCache = addAntiCache;
- iframeId = String.format("download-iframe-%s", UUID.randomUUID().toString());
- }
-
- /**
- * Call this method to initiate the download.
- */
- public void initiate(AjaxRequestTarget target) {
- StringBuilder url = new StringBuilder(getCallbackUrl());
-
- if (addAntiCache) {
- url.append(url.indexOf("?") > -1 ? "&" : "?")
- .append("antiCache=").append(System.currentTimeMillis());
- }
- target.appendJavaScript(String.format("$('#%s').attr('src', '%s');", iframeId, url.toString()));
- }
-
- @Override
- protected void onBind() {
- super.onBind();
- // it is impossible to get page by id anyway
- if (!(getComponent() instanceof Page)) {
- getComponent().setOutputMarkupId(true);
- }
- }
-
- private static ResourceReference newResourceReference() {
- return new JavaScriptResourceReference(AjaxDownload.class, "ajax-download.js");
- }
-
- @Override
- public void renderHead(Component component, IHeaderResponse response) {
- super.renderHead(component, response);
- response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(newResourceReference())));
- response.render(OnDomReadyHeaderItem.forScript(String.format("addDwnldIframe('%s', '%s');", component instanceof Page ? "" : component.getMarkupId(), iframeId)));
- }
-
- @Override
- public void onRequest() {
- ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(getResourceStream(), getFileName());
- handler.setContentDisposition(getContentDisposition());
- getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
- }
-
- protected ContentDisposition getContentDisposition() {
- return ContentDisposition.ATTACHMENT;
- }
- /**
- * Override this method for a file name which will let the browser prompt
- * with a save/open dialog.
- *
- * @see ResourceStreamRequestTarget#getFileName()
- */
- protected String getFileName() {
- return this.fileName;
- }
-
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- /**
- * Hook method providing the actual resource stream.
- */
- protected IResourceStream getResourceStream() {
- return resourceStream;
-
- }
-
- public void setResourceStream(IResourceStream resourceStream) {
- this.resourceStream = resourceStream;
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import java.util.UUID;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.Page;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.behavior.AbstractAjaxBehavior;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.resource.IResourceStream;
+
+/**
+ * see: <a href="https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow">
+ * https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow</href>
+ *
+ */
+public class AjaxDownload extends AbstractAjaxBehavior {
+ private static final long serialVersionUID = 1L;
+ private boolean addAntiCache;
+ private String fileName;
+ private IResourceStream resourceStream;
+ private final String iframeId;
+
+ public AjaxDownload() {
+ this(true);
+ }
+
+ public AjaxDownload(boolean addAntiCache) {
+ super();
+ this.addAntiCache = addAntiCache;
+ iframeId = String.format("download-iframe-%s", UUID.randomUUID().toString());
+ }
+
+ /**
+ * Call this method to initiate the download.
+ */
+ public void initiate(AjaxRequestTarget target) {
+ StringBuilder url = new StringBuilder(getCallbackUrl());
+
+ if (addAntiCache) {
+ url.append(url.indexOf("?") > -1 ? "&" : "?")
+ .append("antiCache=").append(System.currentTimeMillis());
+ }
+ target.appendJavaScript(String.format("$('#%s').attr('src', '%s');", iframeId, url.toString()));
+ }
+
+ @Override
+ protected void onBind() {
+ super.onBind();
+ // it is impossible to get page by id anyway
+ if (!(getComponent() instanceof Page)) {
+ getComponent().setOutputMarkupId(true);
+ }
+ }
+
+ private static ResourceReference newResourceReference() {
+ return new JavaScriptResourceReference(AjaxDownload.class, "ajax-download.js");
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response) {
+ super.renderHead(component, response);
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(newResourceReference())));
+ response.render(OnDomReadyHeaderItem.forScript(String.format("addDwnldIframe('%s', '%s');", component instanceof Page ? "" : component.getMarkupId(), iframeId)));
+ }
+
+ @Override
+ public void onRequest() {
+ ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(getResourceStream(), getFileName());
+ handler.setContentDisposition(getContentDisposition());
+ getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
+ }
+
+ protected ContentDisposition getContentDisposition() {
+ return ContentDisposition.ATTACHMENT;
+ }
+ /**
+ * Override this method for a file name which will let the browser prompt
+ * with a save/open dialog.
+ *
+ * @see ResourceStreamRequestTarget#getFileName()
+ */
+ protected String getFileName() {
+ return this.fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ /**
+ * Hook method providing the actual resource stream.
+ */
+ protected IResourceStream getResourceStream() {
+ return resourceStream;
+
+ }
+
+ public void setResourceStream(IResourceStream resourceStream) {
+ this.resourceStream = resourceStream;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/webapp/conf/om_ldap.cfg
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/conf/om_ldap.cfg b/openmeetings-web/src/main/webapp/conf/om_ldap.cfg
index 4415d8f..e65436c 100644
--- a/openmeetings-web/src/main/webapp/conf/om_ldap.cfg
+++ b/openmeetings-web/src/main/webapp/conf/om_ldap.cfg
@@ -1,109 +1,109 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-#
-#ConfigurationFile for LDAP Auth
-#ConfigKey 'ldap_config_path' must be set in DataBase Configration of OM and point to this file
-#o.becherer,14.01.2009
-
-#LDAP URL
-# This is the URL used to access your LDAP server.
-# if you want to use "ldaps://" links, please be aware that you need to import your CA certificate
-# to a java keystore and add the -Djavax.net.ssl.keyStore, -Djavax.net.ssl.keyStorePassword,
-# -Djavax.net.ssl.trustStore and -Djavax.net.ssl.trustStorePassword parameters to your
-# JAVA_OPT environment
-ldap_conn_host=dc2.medint.local
-ldap_conn_port=389
-ldap_conn_secure=false
-
-# Login distinguished name (DN) for Authentication on LDAP Server - keep empty if not required
-# Use full qualified LDAP DN
-ldap_admin_dn=CN=dummy,OU=Company,DC=medint,DC=local
-
-# Loginpass for Authentication on LDAP Server - keep empty if not required
-ldap_passwd=dummy07
-
-# base to search for userdata(of user, that wants to login)
-ldap_search_base=OU=Company,DC=medint,DC=local
-
-# Fieldnames (can differ between Ldap servers)
-ldap_search_query=(uid=%s)
-
-# the scope of the search might be: OBJECT, ONELEVEL, SUBTREE
-ldap_search_scope=ONELEVEL
-
-# Ldap auth type(NONE, SEARCHANDBIND, SIMPLEBIND)
-# When using SIMPLEBIND a simple bind is performed on the LDAP server to check user authentication
-# When using NONE, the Ldap server is not used for authentication
-ldap_auth_type=SIMPLEBIND
-
-# userDN format, will be used to bind if ldap_auth_type=SIMPLEBIND
-# might be used to get provisionningDn in case ldap_auth_type=NONE
-ldap_userdn_format=uid=%s,OU=Company,DC=medint,DC=local
-
-# Ldap provisioning type(NONE, AUTOCREATE, AUTOUPDATE)
-ldap_provisionning=AUTOCREATE
-
-# Ldap deref mode (never, searching, finding, always)
-ldap_deref_mode=always
-
-# Set this to 'true' if you want to use admin_dn to get user attributes
-# If any other value is set, user_dn will be used
-ldap_use_admin_to_get_attrs=true
-
-# Ldap-password synchronization to OM DB
-# Set this to 'true' if you want OM to synchronize the user Ldap-password to OM's internal DB
-# If you want to disable the feature, set this to any other string.
-# Defautl value is 'true'
-ldap_sync_password_to_om=true
-
-# Ldap group mode (NONE, ATTRIBUTE, QUERY)
-# NONE means group associations will be ignored
-# ATTRIBUTE means group associations will be taken from 'ldap_group_attr' attribute (M$ AD mode)
-# QUERY means group associations will be taken as a result of 'ldap_group_query' query
-ldap_group_mode=NONE
-
-ldap_group_query=(&(memberUid=%s)(objectClass=posixGroup))
-
-# Ldap user attributes mapping
-# Set the following internal OM user attributes to their corresponding Ldap-attribute
-ldap_user_attr_login=uid
-ldap_user_attr_lastname=sn
-ldap_user_attr_firstname=givenName
-ldap_user_attr_mail=mail
-ldap_user_attr_street=streetAddress
-ldap_user_attr_additionalname=description
-ldap_user_attr_fax=facsimileTelephoneNumber
-ldap_user_attr_zip=postalCode
-ldap_user_attr_country=co
-ldap_user_attr_town=l
-ldap_user_attr_phone=telephoneNumber
-ldap_group_attr=memberOf
-
-# optional, only absolute URLs make sense
-#ldap_user_picture_uri=picture_uri
-
-# optional
-# the timezone has to match any timezone available in Java, otherwise the timezone defined in the value of
-# the conf_key "default.timezone" in OpenMeetings "configurations" table
-#ldap_user_timezone=timezone
-
-# Ldap ignore upper/lower case, convert all input to lower case
-ldap_use_lower_case=false
-
-# Ldap import query, this query should retrieve all LDAP users
-ldap_import_query=(objectClass=inetOrgPerson)
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+#ConfigurationFile for LDAP Auth
+#ConfigKey 'ldap_config_path' must be set in DataBase Configration of OM and point to this file
+#o.becherer,14.01.2009
+
+#LDAP URL
+# This is the URL used to access your LDAP server.
+# if you want to use "ldaps://" links, please be aware that you need to import your CA certificate
+# to a java keystore and add the -Djavax.net.ssl.keyStore, -Djavax.net.ssl.keyStorePassword,
+# -Djavax.net.ssl.trustStore and -Djavax.net.ssl.trustStorePassword parameters to your
+# JAVA_OPT environment
+ldap_conn_host=dc2.medint.local
+ldap_conn_port=389
+ldap_conn_secure=false
+
+# Login distinguished name (DN) for Authentication on LDAP Server - keep empty if not required
+# Use full qualified LDAP DN
+ldap_admin_dn=CN=dummy,OU=Company,DC=medint,DC=local
+
+# Loginpass for Authentication on LDAP Server - keep empty if not required
+ldap_passwd=dummy07
+
+# base to search for userdata(of user, that wants to login)
+ldap_search_base=OU=Company,DC=medint,DC=local
+
+# Fieldnames (can differ between Ldap servers)
+ldap_search_query=(uid=%s)
+
+# the scope of the search might be: OBJECT, ONELEVEL, SUBTREE
+ldap_search_scope=ONELEVEL
+
+# Ldap auth type(NONE, SEARCHANDBIND, SIMPLEBIND)
+# When using SIMPLEBIND a simple bind is performed on the LDAP server to check user authentication
+# When using NONE, the Ldap server is not used for authentication
+ldap_auth_type=SIMPLEBIND
+
+# userDN format, will be used to bind if ldap_auth_type=SIMPLEBIND
+# might be used to get provisionningDn in case ldap_auth_type=NONE
+ldap_userdn_format=uid=%s,OU=Company,DC=medint,DC=local
+
+# Ldap provisioning type(NONE, AUTOCREATE, AUTOUPDATE)
+ldap_provisionning=AUTOCREATE
+
+# Ldap deref mode (never, searching, finding, always)
+ldap_deref_mode=always
+
+# Set this to 'true' if you want to use admin_dn to get user attributes
+# If any other value is set, user_dn will be used
+ldap_use_admin_to_get_attrs=true
+
+# Ldap-password synchronization to OM DB
+# Set this to 'true' if you want OM to synchronize the user Ldap-password to OM's internal DB
+# If you want to disable the feature, set this to any other string.
+# Defautl value is 'true'
+ldap_sync_password_to_om=true
+
+# Ldap group mode (NONE, ATTRIBUTE, QUERY)
+# NONE means group associations will be ignored
+# ATTRIBUTE means group associations will be taken from 'ldap_group_attr' attribute (M$ AD mode)
+# QUERY means group associations will be taken as a result of 'ldap_group_query' query
+ldap_group_mode=NONE
+
+ldap_group_query=(&(memberUid=%s)(objectClass=posixGroup))
+
+# Ldap user attributes mapping
+# Set the following internal OM user attributes to their corresponding Ldap-attribute
+ldap_user_attr_login=uid
+ldap_user_attr_lastname=sn
+ldap_user_attr_firstname=givenName
+ldap_user_attr_mail=mail
+ldap_user_attr_street=streetAddress
+ldap_user_attr_additionalname=description
+ldap_user_attr_fax=facsimileTelephoneNumber
+ldap_user_attr_zip=postalCode
+ldap_user_attr_country=co
+ldap_user_attr_town=l
+ldap_user_attr_phone=telephoneNumber
+ldap_group_attr=memberOf
+
+# optional, only absolute URLs make sense
+#ldap_user_picture_uri=picture_uri
+
+# optional
+# the timezone has to match any timezone available in Java, otherwise the timezone defined in the value of
+# the conf_key "default.timezone" in OpenMeetings "configurations" table
+#ldap_user_timezone=timezone
+
+# Ldap ignore upper/lower case, convert all input to lower case
+ldap_use_lower_case=false
+
+# Ldap import query, this query should retrieve all LDAP users
+ldap_import_query=(objectClass=inetOrgPerson)
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/webapp/js/openmeetings_functions.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/js/openmeetings_functions.js b/openmeetings-web/src/main/webapp/js/openmeetings_functions.js
index 53c3d3a..09b3fc5 100644
--- a/openmeetings-web/src/main/webapp/js/openmeetings_functions.js
+++ b/openmeetings-web/src/main/webapp/js/openmeetings_functions.js
@@ -1,64 +1,64 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
-*/
-/*
- * Functions to be included in the HTML wrapper,
- * see the templates dir (*.vm) for the include statements
- *
- */
-
-function getBrowserInfo() {
- //alert(navigator.userAgent);
- document.getElementById("lzapp").getBrowserInfoCallback(navigator.userAgent);
-}
-
-function getBrowserLang() {
- //alert(navigator.userAgent);
- document.getElementById("lzapp").getBrowserLangCallback(navigator.language);
-}
-
-function redirectToUrl(url) {
- //alert(navigator.userAgent);
- window.location = url;
-
- document.getElementById("lzapp").redirectToUrlCallback("ok");
-}
-
-function loadingComplete() {
- document.getElementById("swfloading").style.display = 'none';
- var lzApp = document.getElementById("lzappContainer");
- lzApp.style.width = '100%';
- lzApp.style.height = '100%';
-}
-
-function getTimeZoneOffsetMinutes() {
- var rightNow = new Date(), std_time_offset = -rightNow.getTimezoneOffset();
- for (var i = 0; i < 12; ++i) {
- var d = new Date(rightNow.getFullYear(), i, 1, 0, 0, 0, 0), offset = -d.getTimezoneOffset();
- if (offset < std_time_offset) {
- std_time_offset = offset;
- break;
- }
- }
- return std_time_offset;
-}
-
-function getTimeZoneOffset() {
- document.getElementById("lzapp").getTimeZoneOffsetCallback(getTimeZoneOffsetMinutes()/60);
-}
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+*/
+/*
+ * Functions to be included in the HTML wrapper,
+ * see the templates dir (*.vm) for the include statements
+ *
+ */
+
+function getBrowserInfo() {
+ //alert(navigator.userAgent);
+ document.getElementById("lzapp").getBrowserInfoCallback(navigator.userAgent);
+}
+
+function getBrowserLang() {
+ //alert(navigator.userAgent);
+ document.getElementById("lzapp").getBrowserLangCallback(navigator.language);
+}
+
+function redirectToUrl(url) {
+ //alert(navigator.userAgent);
+ window.location = url;
+
+ document.getElementById("lzapp").redirectToUrlCallback("ok");
+}
+
+function loadingComplete() {
+ document.getElementById("swfloading").style.display = 'none';
+ var lzApp = document.getElementById("lzappContainer");
+ lzApp.style.width = '100%';
+ lzApp.style.height = '100%';
+}
+
+function getTimeZoneOffsetMinutes() {
+ var rightNow = new Date(), std_time_offset = -rightNow.getTimezoneOffset();
+ for (var i = 0; i < 12; ++i) {
+ var d = new Date(rightNow.getFullYear(), i, 1, 0, 0, 0, 0), offset = -d.getTimezoneOffset();
+ if (offset < std_time_offset) {
+ std_time_offset = offset;
+ break;
+ }
+ }
+ return std_time_offset;
+}
+
+function getTimeZoneOffset() {
+ document.getElementById("lzapp").getTimeZoneOffsetCallback(getTimeZoneOffsetMinutes()/60);
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/webapp/languages/errorvalues.xsd
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/languages/errorvalues.xsd b/openmeetings-web/src/main/webapp/languages/errorvalues.xsd
index 66f06d1..5acb78a 100644
--- a/openmeetings-web/src/main/webapp/languages/errorvalues.xsd
+++ b/openmeetings-web/src/main/webapp/languages/errorvalues.xsd
@@ -1,41 +1,41 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
- <xs:element name="ROOT">
- <xs:complexType>
- <xs:sequence>
- <xs:element maxOccurs="unbounded" ref="row"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="row">
- <xs:complexType>
- <xs:sequence>
- <xs:element maxOccurs="unbounded" ref="field"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="field">
- <xs:complexType mixed="true">
- <xs:attribute name="name" use="required" type="xs:NCName"/>
- </xs:complexType>
- </xs:element>
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="ROOT">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="row"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="row">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="field"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="field">
+ <xs:complexType mixed="true">
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/webapp/public/config.xsd
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/public/config.xsd b/openmeetings-web/src/main/webapp/public/config.xsd
index cb1c1b7..b8e19d3 100644
--- a/openmeetings-web/src/main/webapp/public/config.xsd
+++ b/openmeetings-web/src/main/webapp/public/config.xsd
@@ -1,131 +1,131 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
- <xs:element name="config">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="rtmphostlocal"/>
- <xs:element ref="httphostlocal"/>
- <xs:element ref="rtmpport"/>
- <xs:element ref="rtmpsslport"/>
- <xs:element ref="useSSL"/>
- <xs:element ref="red5httpport"/>
- <xs:element ref="protocol"/>
- <xs:element ref="proxyType"/>
- <xs:element ref="loudnessAcitviation"/>
- <xs:element ref="webAppRootKey"/>
- <xs:element ref="httpRootKey"/>
- <xs:element ref="showWindowEffect"/>
- <xs:element ref="codecType"/>
- <xs:element ref="framesPerSecond"/>
- <xs:element ref="bandwidthNeededNormal"/>
- <xs:element ref="bandwidthNeededBest"/>
- <xs:element ref="camQualityNormal"/>
- <xs:element ref="camQualityBest"/>
- <xs:element ref="microphoneRateBest"/>
- <xs:element ref="echoPath" />
- <xs:element ref="echoSuppression" />
- <xs:element ref="defaultWhiteboardWidth"/>
- <xs:element ref="defaultWhiteboardHeight"/>
- <xs:element ref="availableCameraResolutions"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="rtmphostlocal">
- <xs:annotation>
- <xs:documentation>
- URL/IP to use for the Server for RTMP and RTMPT traffic.
- If this value is empty it will try to connect to the
- domain-name the OpenMeetings-Client has been loading from
-
- Can be either and IP or a domain name.
- For example:
- 192.168.254.182
- or
- mysubdomain.streaming.to
- </xs:documentation>
- </xs:annotation>
- <xs:complexType/>
- </xs:element>
- <xs:element name="httphostlocal">
- <xs:annotation>
- <xs:documentation>
- URL/IP to use for the Server for HTTP and HTTPS traffic.
- If this value is empty it will use the rtmphostlocal
- variable (and in that way try to connect to the
- domain-name the OpenMeetings-Client has been loading from)
- </xs:documentation>
- </xs:annotation>
- <xs:complexType/>
- </xs:element>
- <xs:element name="rtmpport" type="xs:integer"/>
- <xs:element name="rtmpTunnelport" type="xs:integer"/>
- <xs:element name="rtmpsslport" type="xs:integer"/>
- <xs:element name="useSSL" type="xs:NCName"/>
- <xs:element name="red5httpport" type="xs:integer"/>
- <xs:element name="protocol" type="xs:NCName"/>
- <xs:element name="proxyType" type="xs:NCName"/>
- <xs:element name="loudnessAcitviation" type="xs:integer"/>
- <xs:element name="webAppRootKey" type="xs:NCName"/>
- <xs:element name="httpRootKey" type="xs:string"/>
- <xs:element name="showWindowEffect" type="xs:NCName"/>
- <xs:element name="codecType" type="xs:string"/>
- <xs:element name="framesPerSecond" type="xs:integer"/>
- <xs:element name="bandwidthNeededNormal" type="xs:integer"/>
- <xs:element name="bandwidthNeededBest" type="xs:integer"/>
- <xs:element name="camQualityNormal" type="xs:integer"/>
- <xs:element name="camQualityBest" type="xs:integer"/>
- <xs:element name="microphoneRateBest" type="xs:integer"/>
- <xs:element name="echoSuppression" type="xs:string"/>
- <xs:element name="echoPath">
- <xs:annotation>
- <xs:documentation>
- AEC configuration value -
- Specifies the echo path length (in milliseconds). A longer echo path means better
- echo cancellation but also introduces longer delays and requires more processing power.
- The default value is 128; the only other possible value is 256.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:int">
- <xs:enumeration value="128" />
- <xs:enumeration value="256" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="defaultWhiteboardWidth" type="xs:integer"/>
- <xs:element name="defaultWhiteboardHeight" type="xs:integer"/>
- <xs:element name="availableCameraResolutions">
- <xs:complexType>
- <xs:sequence>
- <xs:element maxOccurs="unbounded" ref="resolution"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="resolution">
- <xs:complexType>
- <xs:attribute name="height" use="required" type="xs:integer"/>
- <xs:attribute name="isDefault" use="required" type="xs:boolean"/>
- <xs:attribute name="type" use="required"/>
- <xs:attribute name="width" use="required" type="xs:integer"/>
- </xs:complexType>
- </xs:element>
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="config">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="rtmphostlocal"/>
+ <xs:element ref="httphostlocal"/>
+ <xs:element ref="rtmpport"/>
+ <xs:element ref="rtmpsslport"/>
+ <xs:element ref="useSSL"/>
+ <xs:element ref="red5httpport"/>
+ <xs:element ref="protocol"/>
+ <xs:element ref="proxyType"/>
+ <xs:element ref="loudnessAcitviation"/>
+ <xs:element ref="webAppRootKey"/>
+ <xs:element ref="httpRootKey"/>
+ <xs:element ref="showWindowEffect"/>
+ <xs:element ref="codecType"/>
+ <xs:element ref="framesPerSecond"/>
+ <xs:element ref="bandwidthNeededNormal"/>
+ <xs:element ref="bandwidthNeededBest"/>
+ <xs:element ref="camQualityNormal"/>
+ <xs:element ref="camQualityBest"/>
+ <xs:element ref="microphoneRateBest"/>
+ <xs:element ref="echoPath" />
+ <xs:element ref="echoSuppression" />
+ <xs:element ref="defaultWhiteboardWidth"/>
+ <xs:element ref="defaultWhiteboardHeight"/>
+ <xs:element ref="availableCameraResolutions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="rtmphostlocal">
+ <xs:annotation>
+ <xs:documentation>
+ URL/IP to use for the Server for RTMP and RTMPT traffic.
+ If this value is empty it will try to connect to the
+ domain-name the OpenMeetings-Client has been loading from
+
+ Can be either and IP or a domain name.
+ For example:
+ 192.168.254.182
+ or
+ mysubdomain.streaming.to
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="httphostlocal">
+ <xs:annotation>
+ <xs:documentation>
+ URL/IP to use for the Server for HTTP and HTTPS traffic.
+ If this value is empty it will use the rtmphostlocal
+ variable (and in that way try to connect to the
+ domain-name the OpenMeetings-Client has been loading from)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="rtmpport" type="xs:integer"/>
+ <xs:element name="rtmpTunnelport" type="xs:integer"/>
+ <xs:element name="rtmpsslport" type="xs:integer"/>
+ <xs:element name="useSSL" type="xs:NCName"/>
+ <xs:element name="red5httpport" type="xs:integer"/>
+ <xs:element name="protocol" type="xs:NCName"/>
+ <xs:element name="proxyType" type="xs:NCName"/>
+ <xs:element name="loudnessAcitviation" type="xs:integer"/>
+ <xs:element name="webAppRootKey" type="xs:NCName"/>
+ <xs:element name="httpRootKey" type="xs:string"/>
+ <xs:element name="showWindowEffect" type="xs:NCName"/>
+ <xs:element name="codecType" type="xs:string"/>
+ <xs:element name="framesPerSecond" type="xs:integer"/>
+ <xs:element name="bandwidthNeededNormal" type="xs:integer"/>
+ <xs:element name="bandwidthNeededBest" type="xs:integer"/>
+ <xs:element name="camQualityNormal" type="xs:integer"/>
+ <xs:element name="camQualityBest" type="xs:integer"/>
+ <xs:element name="microphoneRateBest" type="xs:integer"/>
+ <xs:element name="echoSuppression" type="xs:string"/>
+ <xs:element name="echoPath">
+ <xs:annotation>
+ <xs:documentation>
+ AEC configuration value -
+ Specifies the echo path length (in milliseconds). A longer echo path means better
+ echo cancellation but also introduces longer delays and requires more processing power.
+ The default value is 128; the only other possible value is 256.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:enumeration value="128" />
+ <xs:enumeration value="256" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="defaultWhiteboardWidth" type="xs:integer"/>
+ <xs:element name="defaultWhiteboardHeight" type="xs:integer"/>
+ <xs:element name="availableCameraResolutions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="resolution"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="resolution">
+ <xs:complexType>
+ <xs:attribute name="height" use="required" type="xs:integer"/>
+ <xs:attribute name="isDefault" use="required" type="xs:boolean"/>
+ <xs:attribute name="type" use="required"/>
+ <xs:attribute name="width" use="required" type="xs:integer"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/webapp/public/theme.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/public/theme.xml b/openmeetings-web/src/main/webapp/public/theme.xml
index 29957cd..82a19b3 100644
--- a/openmeetings-web/src/main/webapp/public/theme.xml
+++ b/openmeetings-web/src/main/webapp/public/theme.xml
@@ -1,330 +1,330 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="theme.xsd">
-
- <!-- Colors -->
- <color name="mainBackgroundColor" value="0xEEF0EB"
- description="main background color" />
-
- <color name="basebgcolorizer" value="0xBDC0DB"
- description="Color for background" />
-
- <color name="baseMousecolorizer" value="0xBDC0DB"
- description="Color Mouseover color for list items" />
-
- <color name="baseMouseOvercolorizer" value="0xBDC0DB"
- description="Color Mouseover color for list items" />
-
- <color name="styleMenuBarBaseColor" value="0x000088"
- description="menu bar background color" />
-
- <color name="mainBorderColor" value="0xCCCCCC"
- description="main border color" />
-
- <color name="secondBorderColor" value="0xE0E0E0"
- description="main border color" />
-
- <color name="menuBackgroundColor" value="0xEFEFEF"
- description="main border color" />
-
- <color name="menuTextColor" value="0x666666"
- description="color of text for menus" />
-
- <color name="menuTextDisabledColor" value="0xBBBBBB"
- description="color of text for menus" />
-
- <!-- Icons -->
- <resource name="warning_popup_icon_rsc"
- description="Toolbar Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/error.png" />
-
- <resource name="info_text_icon_rsc"
- description="Info Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/information.png" />
-
- <!-- Save Toolbar (for example Admin section) -->
-
- <resource name="filesave_rsc"
- description="Save Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/disk.png" />
-
- <resource name="edit_add_rsc"
- description="Save Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/general/plus_icon.png" />
-
- <resource name="reload_rsc"
- description="Save Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/arrow_refresh_small.png" />
-
- <resource name="button_cancel_rsc"
- description="Save Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/general/cancel_icon.png" />
-
- <resource name="add_rsc"
- description="Edit Add Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/general/add.png" />
-
- <resource name="date_icon_rsc"
- description="Edit Add Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/calendar_view_week.png" />
-
- <!-- Sorted list -->
-
- <resource name="step_back_two_arrow"
- description="Step to first"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/resultset_first.png" />
-
- <resource name="step_fwd_two_arrow"
- description="Step to last"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/resultset_last.png" />
-
- <resource name="step_back_arrow"
- description="Step one back"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/resultset_previous.png" />
-
- <resource name="step_fwd_arrow"
- description="Step one next"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/resultset_next.png" />
-
- <resource name="sort_up_rsc"
- description="Sort up"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/resultset_up.png" />
-
- <resource name="sort_down_rsc"
- description="Sort down"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/resultset_down.png" />
-
- <!-- Chat toolbar -->
-
- <resource name="font_style"
- description="Change font style button"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/style.png" />
-
- <resource name="font_bold"
- description="Bold font style button"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/text_bold.png" />
-
- <resource name="font_italic"
- description="Italic font style button"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/text_italic.png" />
-
- <resource name="font_underline"
- description="Underline font style button"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/text_underline.png" />
-
- <resource name="font_color"
- description="Change font color button"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/color_swatch.png" />
-
- <resource name="hyperlink"
- description="Insert hyperlink button"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/world_link.png" />
-
- <!-- Whiteboard Toolbar -->
-
- <resource name="plain"
- description="Toolbar Icon"
- license="APL author sebawagner"
- src="themes/basic-theme/whiteboard/delete_all.png" />
-
- <resource name="plainSlides"
- description="Toolbar Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/whiteboard/page_delete.png" />
-
- <resource name="arrow_draw_panel_tool_cursor"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/arrow_cursor_tool.png" />
-
- <resource name="saveobj"
- description="Toolbar Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/general/disk.png" />
-
- <resource name="revert"
- description="Toolbar Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/whiteboard/arrow_rotate_anticlockwise.png" />
-
- <resource name="next"
- description="Toolbar Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/whiteboard/arrow_rotate_clockwise.png" />
-
- <resource name="menupointer_rsc"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/menupointer.png" />
-
- <resource name="pointer_whiteboard_menu_rsc"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.png" />
-
- <resource name="letter"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/letter.png" />
-
- <resource name="paint"
- description="Toolbar Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/whiteboard/pencil.png" />
-
- <resource name="line_rsc"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/line.png" />
-
- <resource name="uline_rsc"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/uline.png" />
-
- <resource name="rectangle"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/rectangle.png" />
-
- <resource name="ellipse"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/ellipse.png" />
-
- <resource name="drawarrowicon_rsc"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/drawarrowicon.png" />
-
- <!-- whiteboard general -->
-
- <resource name="bounding_box_delete_item_rsc"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/general/cancel_icon_small.png" />
-
- <resource name="bounding_box_textedit_item_rsc"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/text_signature.png" />
-
- <!-- document Tools -->
-
- <resource name="doc_next"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/doc_next.png" />
-
- <resource name="doc_pre"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/doc_pre.png" />
-
- <resource name="doc_first"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/doc_first.png" />
-
- <resource name="doc_last"
- description="Toolbar Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/whiteboard/doc_last.png" />
-
- <!-- property panel -->
- <resource name="colorlinechoose_rsc"
- description="Property bar icon line color"
- license="FamFam Icon Set"
- src="themes/basic-theme/whiteboard/pencil.png" />
-
- <resource name="colorfillchoose_rsc"
- description="Property bar icon fill color"
- license="FamFam Icon Set"
- src="themes/basic-theme/whiteboard/paintcan.png" />
-
- <resource name="color_lock_rsc"
- description="Property bar icon color lock"
- license="FamFam Icon Set"
- src="themes/basic-theme/whiteboard/lock.png" />
-
- <resource name="color_lock_open_rsc"
- description="Property bar icon color lock open"
- license="FamFam Icon Set"
- src="themes/basic-theme/whiteboard/lock_open.png" />
-
- <!-- Dashboard -->
-
- <resource name="icon_btn_dashboard_1"
- description="Info Guide Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/dashboard/wizzard_button_1.png" />
-
- <resource name="icon_btn_dashboard_2"
- description="Info Guide Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/dashboard/wizzard_button_2.png" />
-
- <resource name="icon_btn_dashboard_3"
- description="Info Guide Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/dashboard/wizzard_button_3.png" />
-
- <resource name="icon_btn_dashboard_4"
- description="Info Guide Icon"
- license="APL Author sebawagner"
- src="themes/basic-theme/dashboard/wizzard_button_4.png" />
-
- <resource name="icon_btn_rss_conference"
- description="RSS Tab Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/dashboard/feed.png" />
-
- <resource name="icon_btn_chat_dashboard"
- description="Chat Tab Icon"
- license="FamFam Icon Set"
- src="themes/basic-theme/dashboard/comments.png" />
-
- <resource name="icon_btn_rooms_conference"
- description="Conference Room Tab Icon"
- license="APL author sebawagner"
- src="themes/basic-theme/dashboard/conference_icon_normal.png" />
-</theme>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="theme.xsd">
+
+ <!-- Colors -->
+ <color name="mainBackgroundColor" value="0xEEF0EB"
+ description="main background color" />
+
+ <color name="basebgcolorizer" value="0xBDC0DB"
+ description="Color for background" />
+
+ <color name="baseMousecolorizer" value="0xBDC0DB"
+ description="Color Mouseover color for list items" />
+
+ <color name="baseMouseOvercolorizer" value="0xBDC0DB"
+ description="Color Mouseover color for list items" />
+
+ <color name="styleMenuBarBaseColor" value="0x000088"
+ description="menu bar background color" />
+
+ <color name="mainBorderColor" value="0xCCCCCC"
+ description="main border color" />
+
+ <color name="secondBorderColor" value="0xE0E0E0"
+ description="main border color" />
+
+ <color name="menuBackgroundColor" value="0xEFEFEF"
+ description="main border color" />
+
+ <color name="menuTextColor" value="0x666666"
+ description="color of text for menus" />
+
+ <color name="menuTextDisabledColor" value="0xBBBBBB"
+ description="color of text for menus" />
+
+ <!-- Icons -->
+ <resource name="warning_popup_icon_rsc"
+ description="Toolbar Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/error.png" />
+
+ <resource name="info_text_icon_rsc"
+ description="Info Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/information.png" />
+
+ <!-- Save Toolbar (for example Admin section) -->
+
+ <resource name="filesave_rsc"
+ description="Save Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/disk.png" />
+
+ <resource name="edit_add_rsc"
+ description="Save Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/general/plus_icon.png" />
+
+ <resource name="reload_rsc"
+ description="Save Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/arrow_refresh_small.png" />
+
+ <resource name="button_cancel_rsc"
+ description="Save Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/general/cancel_icon.png" />
+
+ <resource name="add_rsc"
+ description="Edit Add Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/general/add.png" />
+
+ <resource name="date_icon_rsc"
+ description="Edit Add Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/calendar_view_week.png" />
+
+ <!-- Sorted list -->
+
+ <resource name="step_back_two_arrow"
+ description="Step to first"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/resultset_first.png" />
+
+ <resource name="step_fwd_two_arrow"
+ description="Step to last"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/resultset_last.png" />
+
+ <resource name="step_back_arrow"
+ description="Step one back"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/resultset_previous.png" />
+
+ <resource name="step_fwd_arrow"
+ description="Step one next"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/resultset_next.png" />
+
+ <resource name="sort_up_rsc"
+ description="Sort up"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/resultset_up.png" />
+
+ <resource name="sort_down_rsc"
+ description="Sort down"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/resultset_down.png" />
+
+ <!-- Chat toolbar -->
+
+ <resource name="font_style"
+ description="Change font style button"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/style.png" />
+
+ <resource name="font_bold"
+ description="Bold font style button"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/text_bold.png" />
+
+ <resource name="font_italic"
+ description="Italic font style button"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/text_italic.png" />
+
+ <resource name="font_underline"
+ description="Underline font style button"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/text_underline.png" />
+
+ <resource name="font_color"
+ description="Change font color button"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/color_swatch.png" />
+
+ <resource name="hyperlink"
+ description="Insert hyperlink button"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/world_link.png" />
+
+ <!-- Whiteboard Toolbar -->
+
+ <resource name="plain"
+ description="Toolbar Icon"
+ license="APL author sebawagner"
+ src="themes/basic-theme/whiteboard/delete_all.png" />
+
+ <resource name="plainSlides"
+ description="Toolbar Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/whiteboard/page_delete.png" />
+
+ <resource name="arrow_draw_panel_tool_cursor"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/arrow_cursor_tool.png" />
+
+ <resource name="saveobj"
+ description="Toolbar Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/general/disk.png" />
+
+ <resource name="revert"
+ description="Toolbar Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/whiteboard/arrow_rotate_anticlockwise.png" />
+
+ <resource name="next"
+ description="Toolbar Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/whiteboard/arrow_rotate_clockwise.png" />
+
+ <resource name="menupointer_rsc"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/menupointer.png" />
+
+ <resource name="pointer_whiteboard_menu_rsc"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.png" />
+
+ <resource name="letter"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/letter.png" />
+
+ <resource name="paint"
+ description="Toolbar Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/whiteboard/pencil.png" />
+
+ <resource name="line_rsc"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/line.png" />
+
+ <resource name="uline_rsc"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/uline.png" />
+
+ <resource name="rectangle"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/rectangle.png" />
+
+ <resource name="ellipse"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/ellipse.png" />
+
+ <resource name="drawarrowicon_rsc"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/drawarrowicon.png" />
+
+ <!-- whiteboard general -->
+
+ <resource name="bounding_box_delete_item_rsc"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/general/cancel_icon_small.png" />
+
+ <resource name="bounding_box_textedit_item_rsc"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/text_signature.png" />
+
+ <!-- document Tools -->
+
+ <resource name="doc_next"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/doc_next.png" />
+
+ <resource name="doc_pre"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/doc_pre.png" />
+
+ <resource name="doc_first"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/doc_first.png" />
+
+ <resource name="doc_last"
+ description="Toolbar Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/whiteboard/doc_last.png" />
+
+ <!-- property panel -->
+ <resource name="colorlinechoose_rsc"
+ description="Property bar icon line color"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/whiteboard/pencil.png" />
+
+ <resource name="colorfillchoose_rsc"
+ description="Property bar icon fill color"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/whiteboard/paintcan.png" />
+
+ <resource name="color_lock_rsc"
+ description="Property bar icon color lock"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/whiteboard/lock.png" />
+
+ <resource name="color_lock_open_rsc"
+ description="Property bar icon color lock open"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/whiteboard/lock_open.png" />
+
+ <!-- Dashboard -->
+
+ <resource name="icon_btn_dashboard_1"
+ description="Info Guide Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/dashboard/wizzard_button_1.png" />
+
+ <resource name="icon_btn_dashboard_2"
+ description="Info Guide Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/dashboard/wizzard_button_2.png" />
+
+ <resource name="icon_btn_dashboard_3"
+ description="Info Guide Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/dashboard/wizzard_button_3.png" />
+
+ <resource name="icon_btn_dashboard_4"
+ description="Info Guide Icon"
+ license="APL Author sebawagner"
+ src="themes/basic-theme/dashboard/wizzard_button_4.png" />
+
+ <resource name="icon_btn_rss_conference"
+ description="RSS Tab Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/dashboard/feed.png" />
+
+ <resource name="icon_btn_chat_dashboard"
+ description="Chat Tab Icon"
+ license="FamFam Icon Set"
+ src="themes/basic-theme/dashboard/comments.png" />
+
+ <resource name="icon_btn_rooms_conference"
+ description="Conference Room Tab Icon"
+ license="APL author sebawagner"
+ src="themes/basic-theme/dashboard/conference_icon_normal.png" />
+</theme>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/webapp/public/theme.xsd
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/public/theme.xsd b/openmeetings-web/src/main/webapp/public/theme.xsd
index c7a1885..f5b6710 100644
--- a/openmeetings-web/src/main/webapp/public/theme.xsd
+++ b/openmeetings-web/src/main/webapp/public/theme.xsd
@@ -1,45 +1,45 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
- <xs:element name="theme">
- <xs:complexType>
- <xs:sequence>
- <xs:element maxOccurs="unbounded" ref="color"/>
- <xs:element maxOccurs="unbounded" ref="resource"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="color">
- <xs:complexType>
- <xs:attribute name="description" use="required"/>
- <xs:attribute name="name" use="required" type="xs:NCName"/>
- <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="resource">
- <xs:complexType>
- <xs:attribute name="description" use="required"/>
- <xs:attribute name="license" use="required"/>
- <xs:attribute name="name" use="required" type="xs:NCName"/>
- <xs:attribute name="src" use="required"/>
- </xs:complexType>
- </xs:element>
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="theme">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="color"/>
+ <xs:element maxOccurs="unbounded" ref="resource"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="color">
+ <xs:complexType>
+ <xs:attribute name="description" use="required"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="resource">
+ <xs:complexType>
+ <xs:attribute name="description" use="required"/>
+ <xs:attribute name="license" use="required"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="src" use="required"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/webapp/upload/library.xsd
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/upload/library.xsd b/openmeetings-web/src/main/webapp/upload/library.xsd
index 71f2b7d..6b459b1 100644
--- a/openmeetings-web/src/main/webapp/upload/library.xsd
+++ b/openmeetings-web/src/main/webapp/upload/library.xsd
@@ -1,68 +1,68 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
- <xs:element name="presentation">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="originalDocument"/>
- <xs:element ref="swfDocument"/>
- <xs:element ref="thumbs"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="originalDocument">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:NCName">
- <xs:attribute name="lastmod" use="required" type="xs:integer"/>
- <xs:attribute name="size" use="required" type="xs:integer"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="swfDocument">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:NCName">
- <xs:attribute name="lastmod" use="required" type="xs:integer"/>
- <xs:attribute name="size" use="required" type="xs:integer"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="thumbs">
- <xs:complexType>
- <xs:sequence>
- <xs:element maxOccurs="unbounded" ref="thumb"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="thumb">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:NCName">
- <xs:attribute name="lastmod" use="required" type="xs:integer"/>
- <xs:attribute name="size" use="required" type="xs:integer"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="presentation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="originalDocument"/>
+ <xs:element ref="swfDocument"/>
+ <xs:element ref="thumbs"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="originalDocument">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NCName">
+ <xs:attribute name="lastmod" use="required" type="xs:integer"/>
+ <xs:attribute name="size" use="required" type="xs:integer"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="swfDocument">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NCName">
+ <xs:attribute name="lastmod" use="required" type="xs:integer"/>
+ <xs:attribute name="size" use="required" type="xs:integer"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="thumbs">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="thumb"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="thumb">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NCName">
+ <xs:attribute name="lastmod" use="required" type="xs:integer"/>
+ <xs:attribute name="size" use="required" type="xs:integer"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/site/site.xml b/openmeetings-web/src/site/site.xml
index b7a0eae..dd3dc53 100644
--- a/openmeetings-web/src/site/site.xml
+++ b/openmeetings-web/src/site/site.xml
@@ -1,39 +1,39 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu ref="parent"/>
- <menu name="Project">
- <item name="About" href="/index.html" />
- <item name="Info" href="/project-info.html" />
- <item name="Summary" href="/project-summary.html" />
- <item name="License" href="/license.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Dependency Convergence" href="/dependency-convergence.html" />
- <item name="RAT Report" href="/rat-report.html" />
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <bottomNav maxSpan="12">
- <column>Parent Project</column>
- <column>Project</column>
- </bottomNav>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu ref="parent"/>
+ <menu name="Project">
+ <item name="About" href="/index.html" />
+ <item name="Info" href="/project-info.html" />
+ <item name="Summary" href="/project-summary.html" />
+ <item name="License" href="/license.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Dependency Convergence" href="/dependency-convergence.html" />
+ <item name="RAT Report" href="/rat-report.html" />
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <bottomNav maxSpan="12">
+ <column>Parent Project</column>
+ <column>Project</column>
+ </bottomNav>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
index 8775f82..bcf8aad 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
@@ -1,77 +1,77 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.test;
-
-import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.apache.openmeetings.db.entity.user.User.Type;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.util.lang.Args;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.After;
-
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.ButtonAjaxBehavior;
-
-public class AbstractWicketTester extends AbstractJUnitDefaults {
- protected WicketTester tester;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- tester = getWicketTester();
- assertNotNull("Web session should not be null", WebSession.get());
- }
-
- public void login(String login, String password) {
- if (login != null && password != null) {
- WebSession.get().signIn(login, password, Type.user, null);
- } else {
- WebSession.get().signIn(username, userpass, Type.user, null);
- }
- assertTrue("Web session is not signed in for user: " + (login != null ? login : username), WebSession.get().isSignedIn());
- }
-
- @After
- public void tearDown() {
- if (tester != null) {
- //can be null in case exception on initialization
- tester.destroy();
- }
- }
-
- public <T extends Serializable> ButtonAjaxBehavior getButtonBehavior(String path, String name) {
- Args.notNull(path, "path");
- Args.notNull(name, "name");
- @SuppressWarnings("unchecked")
- AbstractDialog<T> dialog = (AbstractDialog<T>)tester.getComponentFromLastRenderedPage(path);
- List<ButtonAjaxBehavior> bl = dialog.getBehaviors(ButtonAjaxBehavior.class);
- for (ButtonAjaxBehavior bb : bl) {
- if (name.equals(bb.getButton().getName())) {
- return bb;
- }
- }
- return null;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.test;
+
+import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.After;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.ButtonAjaxBehavior;
+
+public class AbstractWicketTester extends AbstractJUnitDefaults {
+ protected WicketTester tester;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ tester = getWicketTester();
+ assertNotNull("Web session should not be null", WebSession.get());
+ }
+
+ public void login(String login, String password) {
+ if (login != null && password != null) {
+ WebSession.get().signIn(login, password, Type.user, null);
+ } else {
+ WebSession.get().signIn(username, userpass, Type.user, null);
+ }
+ assertTrue("Web session is not signed in for user: " + (login != null ? login : username), WebSession.get().isSignedIn());
+ }
+
+ @After
+ public void tearDown() {
+ if (tester != null) {
+ //can be null in case exception on initialization
+ tester.destroy();
+ }
+ }
+
+ public <T extends Serializable> ButtonAjaxBehavior getButtonBehavior(String path, String name) {
+ Args.notNull(path, "path");
+ Args.notNull(name, "name");
+ @SuppressWarnings("unchecked")
+ AbstractDialog<T> dialog = (AbstractDialog<T>)tester.getComponentFromLastRenderedPage(path);
+ List<ButtonAjaxBehavior> bl = dialog.getBehaviors(ButtonAjaxBehavior.class);
+ for (ButtonAjaxBehavior bb : bl) {
+ if (name.equals(bb.getButton().getName())) {
+ return bb;
+ }
+ }
+ return null;
+ }
+}
[12/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/RestrictedAccess.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/RestrictedAccess.xml b/openmeetings-server/src/site/xdoc/RestrictedAccess.xml
index e38dcd4..82e53bc 100644
--- a/openmeetings-server/src/site/xdoc/RestrictedAccess.xml
+++ b/openmeetings-server/src/site/xdoc/RestrictedAccess.xml
@@ -1,72 +1,72 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>How to restrict access to your Openmeetings server</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Server Side">
-
- <p>You can protect your OpenMeetings instance from beeing accessed
- from 3th party by using the file:
- </p>
- <p>$RED5_HOME/webapps/openmeetings/WEB-INF/red5-web.properties </p>
- <p>Content: </p>
- <source>webapp.virtualHosts=*,localhost, 127.0.0.1</source>
- Sample file:
- <a
- href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties;hb=HEAD"
- rel="nofollow">https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties;hb=HEAD
- </a>
- </section>
-
- <section name="Client Side">
-
- <p>And you can restrict the access also for the client side: Every
- Flash Plugin will check a file called "crossdomain.xml" before it
- tries to access the server using rtmp/RPC. This file is located: </p>
- <p>$RED5_HOME/webapps/root/crossdomain.xml </p>
- <p>Content: </p>
- <source>
-<![CDATA[
-<?xml version="1.0"?>
-<cross-domain-policy>
- <site-control permitted-cross-domain-policies="all"/>
- <allow-access-from domain="localhost" to-ports="20-65535"/>
- <allow-access-from domain="*.local" to-ports="20-65535"/>
-</cross-domain-policy>
-]]>
- </source>
-
- <p>
- If you accessing your application behind an Apache Webservre (using
- mod_proxy or mod_jk2) be careful to make the crossdomain.xml
- accessible. Flash will always search for this file in the www-root
- directory of every URL you connect to. You might use
- <a href="https://addons.mozilla.org/de/firefox/addon/firebug/" rel="nofollow">FireBug
- </a>
- for example to lookup requests.
- </p>
-
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>How to restrict access to your Openmeetings server</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Server Side">
+
+ <p>You can protect your OpenMeetings instance from beeing accessed
+ from 3th party by using the file:
+ </p>
+ <p>$RED5_HOME/webapps/openmeetings/WEB-INF/red5-web.properties </p>
+ <p>Content: </p>
+ <source>webapp.virtualHosts=*,localhost, 127.0.0.1</source>
+ Sample file:
+ <a
+ href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties;hb=HEAD"
+ rel="nofollow">https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties;hb=HEAD
+ </a>
+ </section>
+
+ <section name="Client Side">
+
+ <p>And you can restrict the access also for the client side: Every
+ Flash Plugin will check a file called "crossdomain.xml" before it
+ tries to access the server using rtmp/RPC. This file is located: </p>
+ <p>$RED5_HOME/webapps/root/crossdomain.xml </p>
+ <p>Content: </p>
+ <source>
+<![CDATA[
+<?xml version="1.0"?>
+<cross-domain-policy>
+ <site-control permitted-cross-domain-policies="all"/>
+ <allow-access-from domain="localhost" to-ports="20-65535"/>
+ <allow-access-from domain="*.local" to-ports="20-65535"/>
+</cross-domain-policy>
+]]>
+ </source>
+
+ <p>
+ If you accessing your application behind an Apache Webservre (using
+ mod_proxy or mod_jk2) be careful to make the crossdomain.xml
+ accessible. Flash will always search for this file in the www-root
+ directory of every URL you connect to. You might use
+ <a href="https://addons.mozilla.org/de/firefox/addon/firebug/" rel="nofollow">FireBug
+ </a>
+ for example to lookup requests.
+ </p>
+
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/SakaiPlugin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/SakaiPlugin.xml b/openmeetings-server/src/site/xdoc/SakaiPlugin.xml
index 30f6be4..64b9d0a 100644
--- a/openmeetings-server/src/site/xdoc/SakaiPlugin.xml
+++ b/openmeetings-server/src/site/xdoc/SakaiPlugin.xml
@@ -1,111 +1,111 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Sakai Plugin</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Introduction">
- <p>
- In 2010,
- <a rel="nofollow" href="http://www.samoo.es" target="_blank">Samoo company
- </a>
- has developed a plugin that integrates Sakai LMS and OpenMeetings
- .
- </p>
- <p>
- The plugin was developed for some Spanish Universities that use
- Sakai and belongs to
- <a rel="nofollow" target="_blank"
- href="https://confluence.sakaiproject.org/display/SPANISH/S2G+-+Spanish+Sakai+Group">"Spanish Sakai Universities"</a>
- group:
- </p>
- <ul>
- <li>
- <a rel="nofollow" href="http://www.udl.es/" target="_blank">Universitat de Lleida </a>
- </li>
- <li>
- <a rel="nofollow" href="http://www.upv.es/" target="_blank">Universidad Politécnica de Valencia </a>
- </li>
- <li>
- <a rel="nofollow" href="http://www.um.es/" target="_blank">Universidad de Murcia</a>
- </li>
- <li>
- <a rel="nofollow" href="http://www.unavarra.es/" target="_blank">Universidad Pública de Navarra</a>
- </li>
- <li>
- <a rel="nofollow" href="http://www.ucam.edu/" target="_blank">Universidad Católica San Antonio de Murcia
- </a>
- </li>
- </ul>
- </section>
-
- <section name="Features">
- <p>The plugin contains the following features: </p>
- <ul>
- <li>Create videoconference rooms through Sakai: </li>
- <li>
- <ol>
- <li>Integrated with calendar </li>
- <li>Integrated with announcements </li>
- <li>Sends an email to all site participants </li>
- <li>Rooms restricted to site groups </li>
- <li>Configurable room type </li>
- </ol>
- </li>
- </ul>
- <p />
- <ul>
- <li>Future requirements </li>
- <li>
- <ol>
- <li>Publish room recordings to students </li>
- <li>Room reservation </li>
- </ol>
- </li>
- </ul>
- </section>
-
- <section name="Source">
- <p>
- You can download and build the source code
- <a rel="nofollow" target="_blank"
- href="https://source.sakaiproject.org/contrib/samoo/adobeconnectpro-openmeetings-integration/trunk/">here</a>
- </p>
- </section>
-
- <section name="Installation and documentation">
- <p>
- The documentation resides in the
- <a rel="nofollow" target="_blank" href="https://confluence.sakaiproject.org/display/OPENMTG/Home">Sakai confluence space</a>
- </p>
- <p>
- Please contact the mailing list for further information. For
- commercial support you can also contact
- <a rel="nofollow" href="http://www.samoo.es" target="_blank">Samoo company</a>
- or other companies from the list of
- <a href="commercial-support.html">commercial support</a>
- .
- </p>
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Sakai Plugin</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Introduction">
+ <p>
+ In 2010,
+ <a rel="nofollow" href="http://www.samoo.es" target="_blank">Samoo company
+ </a>
+ has developed a plugin that integrates Sakai LMS and OpenMeetings
+ .
+ </p>
+ <p>
+ The plugin was developed for some Spanish Universities that use
+ Sakai and belongs to
+ <a rel="nofollow" target="_blank"
+ href="https://confluence.sakaiproject.org/display/SPANISH/S2G+-+Spanish+Sakai+Group">"Spanish Sakai Universities"</a>
+ group:
+ </p>
+ <ul>
+ <li>
+ <a rel="nofollow" href="http://www.udl.es/" target="_blank">Universitat de Lleida </a>
+ </li>
+ <li>
+ <a rel="nofollow" href="http://www.upv.es/" target="_blank">Universidad Politécnica de Valencia </a>
+ </li>
+ <li>
+ <a rel="nofollow" href="http://www.um.es/" target="_blank">Universidad de Murcia</a>
+ </li>
+ <li>
+ <a rel="nofollow" href="http://www.unavarra.es/" target="_blank">Universidad Pública de Navarra</a>
+ </li>
+ <li>
+ <a rel="nofollow" href="http://www.ucam.edu/" target="_blank">Universidad Católica San Antonio de Murcia
+ </a>
+ </li>
+ </ul>
+ </section>
+
+ <section name="Features">
+ <p>The plugin contains the following features: </p>
+ <ul>
+ <li>Create videoconference rooms through Sakai: </li>
+ <li>
+ <ol>
+ <li>Integrated with calendar </li>
+ <li>Integrated with announcements </li>
+ <li>Sends an email to all site participants </li>
+ <li>Rooms restricted to site groups </li>
+ <li>Configurable room type </li>
+ </ol>
+ </li>
+ </ul>
+ <p />
+ <ul>
+ <li>Future requirements </li>
+ <li>
+ <ol>
+ <li>Publish room recordings to students </li>
+ <li>Room reservation </li>
+ </ol>
+ </li>
+ </ul>
+ </section>
+
+ <section name="Source">
+ <p>
+ You can download and build the source code
+ <a rel="nofollow" target="_blank"
+ href="https://source.sakaiproject.org/contrib/samoo/adobeconnectpro-openmeetings-integration/trunk/">here</a>
+ </p>
+ </section>
+
+ <section name="Installation and documentation">
+ <p>
+ The documentation resides in the
+ <a rel="nofollow" target="_blank" href="https://confluence.sakaiproject.org/display/OPENMTG/Home">Sakai confluence space</a>
+ </p>
+ <p>
+ Please contact the mailing list for further information. For
+ commercial support you can also contact
+ <a rel="nofollow" href="http://www.samoo.es" target="_blank">Samoo company</a>
+ or other companies from the list of
+ <a href="commercial-support.html">commercial support</a>
+ .
+ </p>
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/SugarCRMPlugin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/SugarCRMPlugin.xml b/openmeetings-server/src/site/xdoc/SugarCRMPlugin.xml
index 3c7645e..f02bde3 100644
--- a/openmeetings-server/src/site/xdoc/SugarCRMPlugin.xml
+++ b/openmeetings-server/src/site/xdoc/SugarCRMPlugin.xml
@@ -1,73 +1,73 @@
-<?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="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>SugarCRM Plugin</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="SugarCRM Plugin for OpenMeetings">
- <p>
- You can get the latest Version of the Plugin for SugarCRM from the
- <a href="downloads.html">downloads</a>
- .
- </p>
- <p>
- You can find the OpenMeetings Plugin also in the
- <a href="http://www.sugarforge.org/projects/openmeetings/" target="_blank" rel="nofollow">SugarCRM Plugin database</a>
- .
- </p>
- </section>
-
- <section name="Features">
- <p>The plugin contains the following features: </p>
- <ul>
- <li>Create videoconference rooms through SugarCRM: </li>
- <li>
- <ol>
- <li>Integrated with calendar </li>
- <li>Integrated with SugarCRM meetings </li>
- <li>Sends invetations emails to meeting participants </li>
- <li>Configurable room type </li>
- </ol>
- </li>
- </ul>
- </section>
-
- <section name="Installation the SugarCRM Plugin for OpenMeetings">
- <p>In SugarCRM's administration web-interface you will find the
- module loader.
- </p>
- <a class="fancybox-buttons" href="images/SugarCRM_Installation.png">
- <img src="images/SugarCRM_Installation.png" alt="" width="640" height="320" />
- </a>
- <ol>
- <li>Upload the module with module loader in administration area. </li>
- <li>Configure OpenMeetings settings. </li>
- <li>Create OpenMeetings rooms. </li>
- </ol>
- </section>
-
- <section name="Demo video">
- <p>The demo video of SugarCRM plugin show you the plugin in action </p>
- <iframe width="640" height="390" src="http://www.youtube.com/embed/xrDbcXqxDq8" frameborder="0" allowfullscreen=""></iframe>
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>SugarCRM Plugin</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="SugarCRM Plugin for OpenMeetings">
+ <p>
+ You can get the latest Version of the Plugin for SugarCRM from the
+ <a href="downloads.html">downloads</a>
+ .
+ </p>
+ <p>
+ You can find the OpenMeetings Plugin also in the
+ <a href="http://www.sugarforge.org/projects/openmeetings/" target="_blank" rel="nofollow">SugarCRM Plugin database</a>
+ .
+ </p>
+ </section>
+
+ <section name="Features">
+ <p>The plugin contains the following features: </p>
+ <ul>
+ <li>Create videoconference rooms through SugarCRM: </li>
+ <li>
+ <ol>
+ <li>Integrated with calendar </li>
+ <li>Integrated with SugarCRM meetings </li>
+ <li>Sends invetations emails to meeting participants </li>
+ <li>Configurable room type </li>
+ </ol>
+ </li>
+ </ul>
+ </section>
+
+ <section name="Installation the SugarCRM Plugin for OpenMeetings">
+ <p>In SugarCRM's administration web-interface you will find the
+ module loader.
+ </p>
+ <a class="fancybox-buttons" href="images/SugarCRM_Installation.png">
+ <img src="images/SugarCRM_Installation.png" alt="" width="640" height="320" />
+ </a>
+ <ol>
+ <li>Upload the module with module loader in administration area. </li>
+ <li>Configure OpenMeetings settings. </li>
+ <li>Create OpenMeetings rooms. </li>
+ </ol>
+ </section>
+
+ <section name="Demo video">
+ <p>The demo video of SugarCRM plugin show you the plugin in action </p>
+ <iframe width="640" height="390" src="http://www.youtube.com/embed/xrDbcXqxDq8" frameborder="0" allowfullscreen=""></iframe>
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/TimeZoneHandling.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/TimeZoneHandling.xml b/openmeetings-server/src/site/xdoc/TimeZoneHandling.xml
index 134ad20..8f0a83c 100644
--- a/openmeetings-server/src/site/xdoc/TimeZoneHandling.xml
+++ b/openmeetings-server/src/site/xdoc/TimeZoneHandling.xml
@@ -1,39 +1,39 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Timezones</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Introduction">
- <p>
- Time zones are being taken from JDK, so please keep it up to date :)
- </p>
- <p>
- You can set a Flag
- <strong>forceTimeZoneCheck</strong>
- for each user that gives him a Pop-Up notification to change his
- time zone. The Flag can be changed in the user administration of
- OpenMeetings. This can be handy if you update from a previous
- version of OpenMeetings to make sure users see the new feature and
- update their settings.
- </p>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Timezones</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Introduction">
+ <p>
+ Time zones are being taken from JDK, so please keep it up to date :)
+ </p>
+ <p>
+ You can set a Flag
+ <strong>forceTimeZoneCheck</strong>
+ for each user that gives him a Pop-Up notification to change his
+ time zone. The Flag can be changed in the user administration of
+ OpenMeetings. This can be handy if you update from a previous
+ version of OpenMeetings to make sure users see the new feature and
+ update their settings.
+ </p>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/Upgrade.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/Upgrade.xml b/openmeetings-server/src/site/xdoc/Upgrade.xml
index ebdd7b8..b224c75 100644
--- a/openmeetings-server/src/site/xdoc/Upgrade.xml
+++ b/openmeetings-server/src/site/xdoc/Upgrade.xml
@@ -1,97 +1,97 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Upgrade</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Upgrading OpenMeetings via the Web-Interface">
- <ol>
- <li>
- <p>There is a System Backup and Import tool. Login as Administrator and Administration > Backup</p>
- <a class="fancybox-buttons" href="images/backup.png"><img src="images/backup.png" alt="" width="600" /></a>
- <p>
- The Text in the Administration > Backup section actually just says
- it all. The backup contains users, rooms, groups and
- appointments (Invitations and Reminders are NOT included in the
- Backup and Reminders will not be send again!). The Backup contains
- also all uploaded Files and Documents and will re-import them again.
-
- Max Upload Size is 1000 MB.
- </p>
- </li>
- <li>Stop Openmeetings</li>
- <li>(*) Backup folder with existing installation</li>
- <li>(*) Perform DB backup using tools available for your database</li>
- <li>Delete/move folder with existing installation of OM</li>
- <li>Drop existing OM database</li>
- <li>Create empty Database with same name and UTF-8 support</li>
- <li>Unzip new version of OM into the same folder</li>
- <li>(*) Modify DB settings</li>
- <li>Start Openmeetings</li>
- <li>go to http://localhost:5080/openmeetings</li>
- <li>Install OM using Web installer</li>
- <li>Login as Administrator and Administration > Backup</li>
- <li>Perform system import</li>
- </ol>
- <p>(*) Optional step</p>
- </section>
-
- <section name="Upgrading OpenMeetings from command line">
- <p>
- <i>You need OpenMeetings 2.x or later to have the command line interface (CLI)
- feature available
- </i>
- </p>
- <p>
- Alternatively to the Web-Installer you can also export and import via the command line. <br/>
- <b>You should shutdown the Red5-Service while doing CLI export or import operations</b><br />
- Cd to your red5-home directory, type "./admin.sh" and hit enter. You will get options available.<br />
- <br />
- A typical export would be:<br />
- <tt>./admin.sh -b -file backup_today.zip</tt><br />
- <br />
- A typical import would be:<br />
- <tt>./admin.sh -r -file backup_yesterday.zip</tt><br />
- <br />
- You can also combine the installation with a backup, that way you will create exactly the user table
- that existed in the backup.<br />
- A typical install from backup would be:<br />
- <tt>./admin.sh -i -file backup_yesterday.zip</tt><br/>
- please see <a href="CommandLineAdmin.html" target="_blank" rel="nofollow">Command Line Admin</a> for more options
- </p>
- <p><b>Detailed steps</b></p>
- <ol>
- <li>Stop Openmeetings</li>
- <li>(*) Backup folder with existing installation</li>
- <li>(*) Perform DB backup using tools available for your database</li>
- <li><tt>./admin.sh -v -b -file ../backup_today.zip</tt></li>
- <li>Delete/move folder with existing installation of OM</li>
- <li>Unzip new version of OM into the same folder</li>
- <li><tt>./admin.sh -v -i -file ../backup_today.zip --drop --skip-default-rooms</tt> (Optionally you can specify
- additional parameters like DB host/user/pass/instance etc.)</li>
- <li>Start Openmeetings</li>
- <li>go to http://localhost:5080/openmeetings</li>
- </ol>
- <p>(*) Optional step</p>
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Upgrade</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Upgrading OpenMeetings via the Web-Interface">
+ <ol>
+ <li>
+ <p>There is a System Backup and Import tool. Login as Administrator and Administration > Backup</p>
+ <a class="fancybox-buttons" href="images/backup.png"><img src="images/backup.png" alt="" width="600" /></a>
+ <p>
+ The Text in the Administration > Backup section actually just says
+ it all. The backup contains users, rooms, groups and
+ appointments (Invitations and Reminders are NOT included in the
+ Backup and Reminders will not be send again!). The Backup contains
+ also all uploaded Files and Documents and will re-import them again.
+
+ Max Upload Size is 1000 MB.
+ </p>
+ </li>
+ <li>Stop Openmeetings</li>
+ <li>(*) Backup folder with existing installation</li>
+ <li>(*) Perform DB backup using tools available for your database</li>
+ <li>Delete/move folder with existing installation of OM</li>
+ <li>Drop existing OM database</li>
+ <li>Create empty Database with same name and UTF-8 support</li>
+ <li>Unzip new version of OM into the same folder</li>
+ <li>(*) Modify DB settings</li>
+ <li>Start Openmeetings</li>
+ <li>go to http://localhost:5080/openmeetings</li>
+ <li>Install OM using Web installer</li>
+ <li>Login as Administrator and Administration > Backup</li>
+ <li>Perform system import</li>
+ </ol>
+ <p>(*) Optional step</p>
+ </section>
+
+ <section name="Upgrading OpenMeetings from command line">
+ <p>
+ <i>You need OpenMeetings 2.x or later to have the command line interface (CLI)
+ feature available
+ </i>
+ </p>
+ <p>
+ Alternatively to the Web-Installer you can also export and import via the command line. <br/>
+ <b>You should shutdown the Red5-Service while doing CLI export or import operations</b><br />
+ Cd to your red5-home directory, type "./admin.sh" and hit enter. You will get options available.<br />
+ <br />
+ A typical export would be:<br />
+ <tt>./admin.sh -b -file backup_today.zip</tt><br />
+ <br />
+ A typical import would be:<br />
+ <tt>./admin.sh -r -file backup_yesterday.zip</tt><br />
+ <br />
+ You can also combine the installation with a backup, that way you will create exactly the user table
+ that existed in the backup.<br />
+ A typical install from backup would be:<br />
+ <tt>./admin.sh -i -file backup_yesterday.zip</tt><br/>
+ please see <a href="CommandLineAdmin.html" target="_blank" rel="nofollow">Command Line Admin</a> for more options
+ </p>
+ <p><b>Detailed steps</b></p>
+ <ol>
+ <li>Stop Openmeetings</li>
+ <li>(*) Backup folder with existing installation</li>
+ <li>(*) Perform DB backup using tools available for your database</li>
+ <li><tt>./admin.sh -v -b -file ../backup_today.zip</tt></li>
+ <li>Delete/move folder with existing installation of OM</li>
+ <li>Unzip new version of OM into the same folder</li>
+ <li><tt>./admin.sh -v -i -file ../backup_today.zip --drop --skip-default-rooms</tt> (Optionally you can specify
+ additional parameters like DB host/user/pass/instance etc.)</li>
+ <li>Start Openmeetings</li>
+ <li>go to http://localhost:5080/openmeetings</li>
+ </ol>
+ <p>(*) Optional step</p>
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/WebappNamePath.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/WebappNamePath.xml b/openmeetings-server/src/site/xdoc/WebappNamePath.xml
index 53658a8..97cb7b1 100644
--- a/openmeetings-server/src/site/xdoc/WebappNamePath.xml
+++ b/openmeetings-server/src/site/xdoc/WebappNamePath.xml
@@ -1,152 +1,152 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Webapp Name / Path</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Customize Openmeetings logo">
- <p>If you want to set up your logo in Openmeetings header you can do the following:</p>
- <ol>
- <li>create your logo image as PNG 40px height</li>
- <li>replace <tt>/opt/red5/webapps/openmeetings/css/images/logo.png</tt> with your logo file</li>
- </ol>
- </section>
- <section name="Renaming /openmeetings context">
- <p>
- If you want to have
- <tt>http://yourcorp.com:5080/yourmeetings</tt>
- instead of
- <tt>http://yourcorp.com:5080/openmeetings</tt>
- you need to do the following
- </p>
- <ol>
- <li>stop openmmetings if it is running </li>
- <li>
- go to openmeetings install dir (for ex. <tt>/opt/red5</tt>)
- </li>
- <li>
- rename <tt>/opt/red5/webapps/openmeetings</tt> to <tt>/opt/red5/webapps/yourmeetings</tt>
- (for ex. <tt>mv /opt/red5/webapps/openmeetings /opt/red5/webapps/yourmeetings</tt>)
- </li>
- <li>
- open <tt>/opt/red5/webapps/yourmeetings/public/config.xml</tt>
- using your favorite text editor (for ex. <tt>vim /opt/red5/webapps/yourmeetings/public/config.xml</tt>)
- <ul>
- <li>
- find and modify <tt><webAppRootKey>openmeetings</webAppRootKey></tt>
- to be <tt><webAppRootKey><strong>yourmeetings</strong></webAppRootKey></tt>
- </li>
- <li>
- find and modify <tt><httpRootKey>/openmeetings/</httpRootKey></tt>
- to be <tt><httpRootKey><strong>/yourmeetings/</strong></httpRootKey></tt>
- </li>
- </ul>
- </li>
- <li>
- open <tt>/opt/red5/webapps/root/index.html</tt>
- using your favorite text editor (for ex. <tt>vim /opt/red5/webapps/root/index.html</tt>)
- <ul>
- <li>
- find and modify <tt><meta http-equiv="REFRESH" content="0;url=openmeetings/"></tt>
- to be <tt><meta http-equiv="REFRESH" content="0;url=<strong>yourmeetings/</strong>"></tt>
- </li>
- </ul>
- </li>
- </ol>
- <p>That's it</p>
- </section>
-
- <section name="Changing hard-coded application name in string labels">
- <p>
- To have
- <i>Your Application Name</i>
- instead of
- <i>Openmeetings</i>
- in
- <strong>all</strong>
- text labels you need to do the following
- </p>
- <ol>
- <li>
- ensure
- <strong>
- <tt>{0}</tt>
- </strong>
- placeholder is used in
- <i>all</i>
- strings you have added and/or modified (all strings bundled into
- Openmeetings already have this placeholder)
- </li>
- <li>login to Openmeetings as user with administrator privileges </li>
- <li>
- go to
- <tt>Administration -> Configuration</tt>
- </li>
- <li>
- find and edit configuration with name
- <strong>
- <tt>application.name</tt>
- </strong>
- </li>
- <li>
- Set its value to be
- <i>
- <tt>Your Application Name</tt>
- </i>
- </li>
- <li>
- <tt>Save</tt>
- </li>
- <li>reload page or relogin </li>
- </ol>
- <p>
- All string will display
- <i>
- <tt>Your Application Name</tt>
- </i>
- in place of
- <i>
- <tt>Openmeetings</tt>
- </i>
- </p>
- </section>
-
- <section name="Running multiple Openmeetings instances on the same server">
- <p>
- If you want to run multiple Openmeetings instances on the same server i.e. to have<br/>
- <tt>http://yourcorp.com:5080/openmeetings1</tt><br/>
- <tt>http://yourcorp.com:5080/openmeetings2</tt><br/> etc.<br/> you need to do the following:
- </p>
- <ol>
- <li>edit <tt>webapps/openmeetings1/WEB-INF/red5-web.properties</tt> for <strong>every</strong> Openmeetings
- instance and add the following line <tt>webapp.contextPath=/openmeetings1</tt> to it (context of
- <strong>every</strong> instance <strong>should</strong> match the folder name in webapps dir)
- </li>
- <li>in case of java memory problems modify <tt>red5.sh</tt> add following line:<br/>
- <source>export JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M"</source>
- or <tt>red5.bat</tt>:<br/>
- <source>set JAVA_OPTS=-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M</source>
- </li>
- </ol>
- </section>
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Webapp Name / Path</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Customize Openmeetings logo">
+ <p>If you want to set up your logo in Openmeetings header you can do the following:</p>
+ <ol>
+ <li>create your logo image as PNG 40px height</li>
+ <li>replace <tt>/opt/red5/webapps/openmeetings/css/images/logo.png</tt> with your logo file</li>
+ </ol>
+ </section>
+ <section name="Renaming /openmeetings context">
+ <p>
+ If you want to have
+ <tt>http://yourcorp.com:5080/yourmeetings</tt>
+ instead of
+ <tt>http://yourcorp.com:5080/openmeetings</tt>
+ you need to do the following
+ </p>
+ <ol>
+ <li>stop openmmetings if it is running </li>
+ <li>
+ go to openmeetings install dir (for ex. <tt>/opt/red5</tt>)
+ </li>
+ <li>
+ rename <tt>/opt/red5/webapps/openmeetings</tt> to <tt>/opt/red5/webapps/yourmeetings</tt>
+ (for ex. <tt>mv /opt/red5/webapps/openmeetings /opt/red5/webapps/yourmeetings</tt>)
+ </li>
+ <li>
+ open <tt>/opt/red5/webapps/yourmeetings/public/config.xml</tt>
+ using your favorite text editor (for ex. <tt>vim /opt/red5/webapps/yourmeetings/public/config.xml</tt>)
+ <ul>
+ <li>
+ find and modify <tt><webAppRootKey>openmeetings</webAppRootKey></tt>
+ to be <tt><webAppRootKey><strong>yourmeetings</strong></webAppRootKey></tt>
+ </li>
+ <li>
+ find and modify <tt><httpRootKey>/openmeetings/</httpRootKey></tt>
+ to be <tt><httpRootKey><strong>/yourmeetings/</strong></httpRootKey></tt>
+ </li>
+ </ul>
+ </li>
+ <li>
+ open <tt>/opt/red5/webapps/root/index.html</tt>
+ using your favorite text editor (for ex. <tt>vim /opt/red5/webapps/root/index.html</tt>)
+ <ul>
+ <li>
+ find and modify <tt><meta http-equiv="REFRESH" content="0;url=openmeetings/"></tt>
+ to be <tt><meta http-equiv="REFRESH" content="0;url=<strong>yourmeetings/</strong>"></tt>
+ </li>
+ </ul>
+ </li>
+ </ol>
+ <p>That's it</p>
+ </section>
+
+ <section name="Changing hard-coded application name in string labels">
+ <p>
+ To have
+ <i>Your Application Name</i>
+ instead of
+ <i>Openmeetings</i>
+ in
+ <strong>all</strong>
+ text labels you need to do the following
+ </p>
+ <ol>
+ <li>
+ ensure
+ <strong>
+ <tt>{0}</tt>
+ </strong>
+ placeholder is used in
+ <i>all</i>
+ strings you have added and/or modified (all strings bundled into
+ Openmeetings already have this placeholder)
+ </li>
+ <li>login to Openmeetings as user with administrator privileges </li>
+ <li>
+ go to
+ <tt>Administration -> Configuration</tt>
+ </li>
+ <li>
+ find and edit configuration with name
+ <strong>
+ <tt>application.name</tt>
+ </strong>
+ </li>
+ <li>
+ Set its value to be
+ <i>
+ <tt>Your Application Name</tt>
+ </i>
+ </li>
+ <li>
+ <tt>Save</tt>
+ </li>
+ <li>reload page or relogin </li>
+ </ol>
+ <p>
+ All string will display
+ <i>
+ <tt>Your Application Name</tt>
+ </i>
+ in place of
+ <i>
+ <tt>Openmeetings</tt>
+ </i>
+ </p>
+ </section>
+
+ <section name="Running multiple Openmeetings instances on the same server">
+ <p>
+ If you want to run multiple Openmeetings instances on the same server i.e. to have<br/>
+ <tt>http://yourcorp.com:5080/openmeetings1</tt><br/>
+ <tt>http://yourcorp.com:5080/openmeetings2</tt><br/> etc.<br/> you need to do the following:
+ </p>
+ <ol>
+ <li>edit <tt>webapps/openmeetings1/WEB-INF/red5-web.properties</tt> for <strong>every</strong> Openmeetings
+ instance and add the following line <tt>webapp.contextPath=/openmeetings1</tt> to it (context of
+ <strong>every</strong> instance <strong>should</strong> match the folder name in webapps dir)
+ </li>
+ <li>in case of java memory problems modify <tt>red5.sh</tt> add following line:<br/>
+ <source>export JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M"</source>
+ or <tt>red5.bat</tt>:<br/>
+ <source>set JAVA_OPTS=-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M</source>
+ </li>
+ </ol>
+ </section>
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/WebcamResolutions.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/WebcamResolutions.xml b/openmeetings-server/src/site/xdoc/WebcamResolutions.xml
index 118716a..f574c8a 100644
--- a/openmeetings-server/src/site/xdoc/WebcamResolutions.xml
+++ b/openmeetings-server/src/site/xdoc/WebcamResolutions.xml
@@ -1,60 +1,60 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>How to configure Camera default resolutions </title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="How to configure Camera default resolutions">
-
- <p>When you choose the webcam you have different resolutions
- available the user can choose from. </p>
- <p>You can add/remove resolutions and also change the default
- selection. In the public/config.xml there is a section: </p>
- <source>
-<![CDATA[
-<availableCameraResolutions>
- <resolution type="4:3 (~6 KByte/sec)" width="40" height="30" isDefault="false" />
- <resolution type="4:3 (~12 KByte/sec)" width="80" height="60" isDefault="false" />
- <resolution type="4:3 (~20 KByte/sec)" width="120" height="90" isDefault="true" />
- <resolution type="QQVGA 4:3 (~36 KByte/sec)" width="160" height="120" isDefault="false" />
- <resolution type="4:3 (~40 KByte/sec)" width="240" height="180" isDefault="false" />
- <resolution type="HVGA 4:3 (~56 KByte/sec)" width="320" height="240" isDefault="false" />
- <resolution type="4:3 (~60 KByte/sec)" width="480" height="360" isDefault="false" />
- <resolution type="4:3 (~68 KByte/sec)" width="640" height="480" isDefault="false" />
- <resolution type="XGA 4:3" width="1024" height="768" isDefault="false" />
- <resolution type="16:9" width="256" height="150" isDefault="false" />
- <resolution type="WQVGA 9:5" width="432" height="240" isDefault="false" />
- <resolution type="pseudo 16:9" width="480" height="234" isDefault="false" />
- <resolution type="16:9" width="512" height="300" isDefault="false" />
- <resolution type="nHD 16:9" width="640" height="360" isDefault="false" />
- <resolution type="16:9" width="1024" height="600" isDefault="false" />
-</availableCameraResolutions>
-]]>
- </source>
-
- <p>Tip: You might edit the public/config.xml with an XML aware editor that correctly
- handles the XSD defintion to avoid misconfiguration. The openmeetings-config.xsd
- is in the same folder like the public/config.xml. </p>
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>How to configure Camera default resolutions </title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="How to configure Camera default resolutions">
+
+ <p>When you choose the webcam you have different resolutions
+ available the user can choose from. </p>
+ <p>You can add/remove resolutions and also change the default
+ selection. In the public/config.xml there is a section: </p>
+ <source>
+<![CDATA[
+<availableCameraResolutions>
+ <resolution type="4:3 (~6 KByte/sec)" width="40" height="30" isDefault="false" />
+ <resolution type="4:3 (~12 KByte/sec)" width="80" height="60" isDefault="false" />
+ <resolution type="4:3 (~20 KByte/sec)" width="120" height="90" isDefault="true" />
+ <resolution type="QQVGA 4:3 (~36 KByte/sec)" width="160" height="120" isDefault="false" />
+ <resolution type="4:3 (~40 KByte/sec)" width="240" height="180" isDefault="false" />
+ <resolution type="HVGA 4:3 (~56 KByte/sec)" width="320" height="240" isDefault="false" />
+ <resolution type="4:3 (~60 KByte/sec)" width="480" height="360" isDefault="false" />
+ <resolution type="4:3 (~68 KByte/sec)" width="640" height="480" isDefault="false" />
+ <resolution type="XGA 4:3" width="1024" height="768" isDefault="false" />
+ <resolution type="16:9" width="256" height="150" isDefault="false" />
+ <resolution type="WQVGA 9:5" width="432" height="240" isDefault="false" />
+ <resolution type="pseudo 16:9" width="480" height="234" isDefault="false" />
+ <resolution type="16:9" width="512" height="300" isDefault="false" />
+ <resolution type="nHD 16:9" width="640" height="360" isDefault="false" />
+ <resolution type="16:9" width="1024" height="600" isDefault="false" />
+</availableCameraResolutions>
+]]>
+ </source>
+
+ <p>Tip: You might edit the public/config.xml with an XML aware editor that correctly
+ handles the XSD defintion to avoid misconfiguration. The openmeetings-config.xsd
+ is in the same folder like the public/config.xml. </p>
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/WebsiteGuide.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/WebsiteGuide.xml b/openmeetings-server/src/site/xdoc/WebsiteGuide.xml
index a8dc062..4c1e622 100644
--- a/openmeetings-server/src/site/xdoc/WebsiteGuide.xml
+++ b/openmeetings-server/src/site/xdoc/WebsiteGuide.xml
@@ -1,80 +1,80 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Website Guide</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="How to update Apache OpenMeetings website">
- <subsection name="Required tools">
- <div>
- <ul>
- <li>Sun JDK7</li>
- <li>Apache Maven (3.3.9 or later)</li>
- </ul>
- </div>
- </subsection>
- <subsection name="Introduction">
- <div>
- <p>
- The Apache OpenMeetings HTML websites are generated from XML files.
- You edit the XML files, run the MAVEN command <source><![CDATA[mvn install -P allModules,unpacked -DskipTests=true]]></source> that generates the HTML files
- and then you copy generated HTML files into appropriate place and commit to Git both: XML and HTML files.
- </p>
- <p>
- The website itself uses JQuery to generate the menu, the pop images and the image slider at the landing page.
- </p>
- </div>
- </subsection>
- <subsection name="Editing the website">
- <div>
- <p>
- OpenMeetings website (<a href="http://openmeetings.apache.org/">http://openmeetings.apache.org/</a>) is a copy from the Git repository.<br />
- The files in the Git to be synced are at:
- <br />
- <a href="https://git-wip-us.apache.org/repos/asf?p=openmeetings-site.git">https://git-wip-us.apache.org/repos/asf?p=openmeetings-site.git</a><br/>
- </p>
- <div>
- To update the website you need to clone master:<br />
- <a href="https://git-wip-us.apache.org/repos/asf/openmeetings-site.git">https://git-wip-us.apache.org/repos/asf/openmeetings-site.git</a> <br/>
- edit the files in the folder <tt>openmeetings-server/src/site</tt><br/>
- then you run the command:
- <source><![CDATA[mvn install -P allModules,unpacked -DskipTests=true]]></source>
- control the output locally in the folder <tt>openmeetings-server/target/server/webapps/openmeetings/docs/</tt><br/>
- copy site contents into target folder: <source><![CDATA[cp -r openmeetings-server/target/server/webapps/openmeetings/docs/* ../site/]]></source>
- And then commit your changes into the Git <i>both</i> the edited xml(s) and generated html files.
- </div>
- <p>
- The public website is automatically synced with the Git repository.<br/>
- Changes to the Git should be immediately synced to the production website.<br/>
- If not you might login to people.apache.org,<br/>
- cd to <tt>/www/openmeetings.apache.org/content/</tt><br/>
- and run the linux command "touch" on the files that need to be synced
- </p>
- </div>
- </subsection>
- <subsection name="Adding a new menu entry">
- <div>
- To add a new menu entry in the left side panel you need to modify the file:
- <br/>
- <tt>openmeetings-server/src/site/site.xml</tt>
- </div>
- </subsection>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Website Guide</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="How to update Apache OpenMeetings website">
+ <subsection name="Required tools">
+ <div>
+ <ul>
+ <li>Sun JDK7</li>
+ <li>Apache Maven (3.3.9 or later)</li>
+ </ul>
+ </div>
+ </subsection>
+ <subsection name="Introduction">
+ <div>
+ <p>
+ The Apache OpenMeetings HTML websites are generated from XML files.
+ You edit the XML files, run the MAVEN command <source><![CDATA[mvn install -P allModules,unpacked -DskipTests=true]]></source> that generates the HTML files
+ and then you copy generated HTML files into appropriate place and commit to Git both: XML and HTML files.
+ </p>
+ <p>
+ The website itself uses JQuery to generate the menu, the pop images and the image slider at the landing page.
+ </p>
+ </div>
+ </subsection>
+ <subsection name="Editing the website">
+ <div>
+ <p>
+ OpenMeetings website (<a href="http://openmeetings.apache.org/">http://openmeetings.apache.org/</a>) is a copy from the Git repository.<br />
+ The files in the Git to be synced are at:
+ <br />
+ <a href="https://git-wip-us.apache.org/repos/asf?p=openmeetings-site.git">https://git-wip-us.apache.org/repos/asf?p=openmeetings-site.git</a><br/>
+ </p>
+ <div>
+ To update the website you need to clone master:<br />
+ <a href="https://git-wip-us.apache.org/repos/asf/openmeetings-site.git">https://git-wip-us.apache.org/repos/asf/openmeetings-site.git</a> <br/>
+ edit the files in the folder <tt>openmeetings-server/src/site</tt><br/>
+ then you run the command:
+ <source><![CDATA[mvn install -P allModules,unpacked -DskipTests=true]]></source>
+ control the output locally in the folder <tt>openmeetings-server/target/server/webapps/openmeetings/docs/</tt><br/>
+ copy site contents into target folder: <source><![CDATA[cp -r openmeetings-server/target/server/webapps/openmeetings/docs/* ../site/]]></source>
+ And then commit your changes into the Git <i>both</i> the edited xml(s) and generated html files.
+ </div>
+ <p>
+ The public website is automatically synced with the Git repository.<br/>
+ Changes to the Git should be immediately synced to the production website.<br/>
+ If not you might login to people.apache.org,<br/>
+ cd to <tt>/www/openmeetings.apache.org/content/</tt><br/>
+ and run the linux command "touch" on the files that need to be synced
+ </p>
+ </div>
+ </subsection>
+ <subsection name="Adding a new menu entry">
+ <div>
+ To add a new menu entry in the left side panel you need to modify the file:
+ <br/>
+ <tt>openmeetings-server/src/site/site.xml</tt>
+ </div>
+ </subsection>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/commercial-support.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/commercial-support.xml b/openmeetings-server/src/site/xdoc/commercial-support.xml
index c5618d8..fe8a191 100644
--- a/openmeetings-server/src/site/xdoc/commercial-support.xml
+++ b/openmeetings-server/src/site/xdoc/commercial-support.xml
@@ -1,56 +1,56 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Commercial Support</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Commercial Support for OpenMeetings">
-
- <p>There are few companies offering complex services for OpenMeetings, including code support,
- development, integration and bug fixing
- </p>
- <ul>
- <li>
- <a href="http://www.unipro.ru/eng/index.html" target="_blank">unipro.ru</a>
- run by Maxim Solodovnik, Timur Tleukenov, Irina Arkhipets, Denis Kandrov, Vasily Degtyarev
- </li>
- <li>
- <a href="http://www.samoo.es" target="_blank" rel="nofollow">samoo.es</a>
- provides support for the Sakai Plugin
- </li>
- </ul>
- <p>
- Please write to <a href="mailto:om.unipro@gmail.com">om.unipro@gmail.com</a> to get UniPro support
- </p>
- <p>
- There are more companies offering installation, customization, hosting, conferencing and support services. You can add
- yourself to the <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Commercial+Support">wiki page</a>.
- </p>
-
- <p>
- Want to get listed here? Become a <a href="http://www.apache.org/dev/committers.html">committer</a>.
- </p>
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Commercial Support</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Commercial Support for OpenMeetings">
+
+ <p>There are few companies offering complex services for OpenMeetings, including code support,
+ development, integration and bug fixing
+ </p>
+ <ul>
+ <li>
+ <a href="http://www.unipro.ru/eng/index.html" target="_blank">unipro.ru</a>
+ run by Maxim Solodovnik, Timur Tleukenov, Irina Arkhipets, Denis Kandrov, Vasily Degtyarev
+ </li>
+ <li>
+ <a href="http://www.samoo.es" target="_blank" rel="nofollow">samoo.es</a>
+ provides support for the Sakai Plugin
+ </li>
+ </ul>
+ <p>
+ Please write to <a href="mailto:om.unipro@gmail.com">om.unipro@gmail.com</a> to get UniPro support
+ </p>
+ <p>
+ There are more companies offering installation, customization, hosting, conferencing and support services. You can add
+ yourself to the <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Commercial+Support">wiki page</a>.
+ </p>
+
+ <p>
+ Want to get listed here? Become a <a href="http://www.apache.org/dev/committers.html">committer</a>.
+ </p>
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/installation.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/installation.xml b/openmeetings-server/src/site/xdoc/installation.xml
index 3dd09ef..6434d8b 100644
--- a/openmeetings-server/src/site/xdoc/installation.xml
+++ b/openmeetings-server/src/site/xdoc/installation.xml
@@ -1,284 +1,284 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Installation</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="OpenMeetings Installation">
-
- <p>
- To update from past versions or migrate see <a href="Upgrade.html">Upgrade</a>.<br/>
- If you are looking for commercial help have a look at
- <a href="commercial-support.html" target="_blank" rel="nofollow">commercial support</a>.
- </p>
- <div>
- <a href="downloads.html" rel="nofollow">
- <img src="images/installation_instructions.png" alt="Installation in 3 simple steps" />
- </a>
- <p>
- <i>Note: Openmeetings requires JRE 7/8, JRE 6 is NOT compatible!</i><br />
- <i>
- Since Version 2.0 you can also install OpenMeetings from command line. Just cd to the unpacked
- archive and type ./admin.sh or admin.bat, please see
- <a href="CommandLineAdmin.html" target="_blank" rel="nofollow">Command Line Admin</a>
- for more options
- </i>
- </p>
- </div>
- <ol>
- <li>
- <b>Recommendation for production environment</b>
- <div style="margin-top: 10px; margin-bottom:10px">
- By default OpenMeetings uses the integrated Apache Derby database.
- For production environment you should consider using
- <a href="MySQLConfig.html">MySQL</a>
- ,
- <a href="PostgresConfig.html">Postgres</a>
- , or for example
- <a href="IBMDB2Config.html">IBM DB2</a>
- , or
- <a href="OracleConfig.html">Oracle</a>
- , or
- <a href="MSSQLConfig.html">MSSQL</a>
- </div>
- </li>
- <li>
- <b>Enabling Image Upload and import to whiteboard</b>
- <div style="margin-top: 10px; margin-bottom:10px">
- Install
- <b>ImageMagick</b>
- on the server, you can get more information on
- <a href="http://www.imagemagick.org" rel="nofollow" target="_blank">http://www.imagemagick.org
- </a>
- regarding installation. The instructions
- for installation can be
- found there
- <a href="http://www.imagemagick.org/script/binary-releases.php"
- target="_blank" rel="nofollow">http://www.imagemagick.org/script/binary-releases.php
- </a>
- ,
- however on
- most Linux systems you can get it via your favorite
- package
- managers (apt-get it)
- </div>
- </li>
- <li>
- <b>Enabling import of PDFs into whiteboard</b>
- <div style="margin-top: 10px; margin-bottom:10px">
- <ul>
- <li>
- Install
- <b>GhostScript</b>
- on the server, you can get more
- information on
- <a href="http://www.ghostscript.com/download/gsdnld.html" target="_blank"
- rel="nofollow">
- http://www.ghostscript.com/download/gsdnld.html
- </a>
- regarding
- installation. The instructions for installation can be
- found
- there, however on most Linux systems you can get it via
- your
- favorite package managers (apt-get it).
- </li>
- <li>
- Install
- <b>SWFTools</b>
- on the server, you can get more information
- on
- <a href="http://www.swftools.org/" target="_blank" rel="nofollow">http://www.swftools.org/
- </a>
- regarding installation. Some of the
- Linux distributions already
- have it in there package manager (see
- <a href="http://packages.debian.org/unstable/utils/swftools"
- target="_blank" rel="nofollow">http://packages.debian.org/unstable/utils/swftools
- </a>
- ), the
- recommended version of SWFTools is 0.9 as prior version
- have a
- bug that does lead to wrong object dimensions at
- whiteboard
- </li>
- </ul>
- </div>
- </li>
- <li>
- <b>Enabling import of .doc, .docx, .ppt, .pptx, ... all Office
- Documents into whitebaord
- </b>
- <div style="margin-top: 10px; margin-bottom:10px">
- <ul>
- <li>OpenOffice or Libre Office Installed</li>
- </ul>
- Since Version 2.x of OpenMeetings it is no more required to start
- OpenOffice (or Libreoffice) service, see
- <a href="OpenOfficeConverter.html">OpenOfficeConverter</a>
- for details
- </div>
- </li>
- <li>
- <b>Enabling Recording and import of .avi, .flv, .mov and .mp4 into
- whiteboard
- </b>
- <div style="margin-top: 10px; margin-bottom:10px">
- <ul>
- <li>
- Install
- <b>FFMpeg (with -enabled libmp3lame and libx264 options)</b>
- . You should get FFMPEG in an up to date copy! OpenMeetings is
- tested with FFMPEG Version 10.3 and latest build from GIT
- For Windows you can download a Build for example from
- <a href="http://ffmpeg.zeranoe.com/builds/" target="_blank"
- rel="nofollow">http://ffmpeg.zeranoe.com/builds/ </a>
- Linux or OSx Users should be able to use one of the various
- Installation Instructions on the Web. You need to enable
- libmp3lame and libx264!
- </li>
- <li>
- Install
- <b>SoX</b>
- <a href="http://sox.sourceforge.net/" target="_blank" rel="nofollow">http://sox.sourceforge.net/
- </a>
- . You should install SoX in a up
- to date copy! SoX 12.xx will NOT
- work!
- </li>
- </ul>
- </div>
- </li>
- </ol>
-
- </section>
-
- <section name="Ports, NAT Settings, Customize">
-
- <p>
- See
- <a href="PortSettings.html">PortSettings</a>
- </p>
- </section>
-
- <section name="Hardware Requirements">
- <ul>
- <li>
- Minimalistic requirement (without Document Converters, Recorder and
- Upload feature) 1GHz CPU 1 GB RAM (
- <i>server-side</i>
- )
- </li>
- <li>
- Recommended requirement 2x/4x 2GHz ++ CPU (32 or 64Bit) 4GB RAM. If
- you have a 64Bit Operating System check if there is a OpenOffice
- 64Bit Version
- <a href="http://download.openoffice.org/other.html#de" rel="nofollow">available
- for your OS
- </a>
- (
- <i>server-side</i>
- )
- </li>
- <li>
- Headset/Microphone recommendation: Logitech ClearChat PC Wireless,
- for example from
- <a
- href="http://www.amazon.de/Logitech-ClearChat-kabelloser-Kopfh%C3%B6rer-Transmitter/dp/B00166WSN4"
- rel="nofollow">Amazon</a>
- or
- <a
- href="http://shop.ebay.com/i.html?_nkw=Logitech+ClearChat.+Wireless&_sacat=0&_trksid=p3286.m270.l1313&LH_BIN=1&LH_IncludeSIF=1&_odkw=Logitech+ClearChat+PC&_osacat=0"
- rel="nofollow">EBay Auctions</a>
- (
- <i>cient-side</i>
- ).
- <a href="RecommendedHardwareList.html">See all recommendations</a>
- for cameras, headsets and speakerphones.
- </li>
- </ul>
-
- </section>
-
- <section name="Debian, Links, Changelog, VoIP">
- <ul>
- <li>for VoIP and SIP Integration see also <a href="voip-sip-integration.html">VoIPAndSIP</a></li>
- <li><a href="http://meetingslive.sourceforge.net/" rel="nofollow">http://meetingslive.sourceforge.net/</a></li>
- <li>
- <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Installation of OM 2.0 for Windows XP, 7, 2003, 2008</a>
- </li>
- <li>
- <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">
- OpenMeetings Installation tutorials by Alvaro Bustos for: Ubuntu, Debian, Mint, MacOS X, CentOS, Fedora,
- PCLinuxOS, openSUSE and Arch Linux.</a>
- </li>
- <li>
- <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27837303"
- rel="nofollow">Tutoriales en español relacionados con OpenMeetings</a>
- </li>
- <li>
- <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools"
- rel="nofollow">Automatic script installation for Ubuntu/Debian (beta)</a>
- </li>
- <li>
- French version of Installation Instructions:
- <a href="http://flash.54n.free.fr/?/Root/Debian/OpenMeetings-Installation"
- rel="nofollow">http://flash.54n.free.fr/?/Root/Debian/OpenMeetings-Installation
- </a>
- </li>
- </ul>
- </section>
-
- <section name="Tips and Tricks">
- <ul>
- <li>
- Use the Debug-Application: open <tt>$RED5_HOME/webapps/openmeetings/WEB-INF/web.xml</tt> change
- <source><![CDATA[
-<init-param>
- <param-name>configuration</param-name>
- <param-value>DEPLOYMENT</param-value>
-</init-param>
- ]]></source> to be
- <source><![CDATA[
-<init-param>
- <param-name>configuration</param-name>
- <param-value>DEVELOPMENT</param-value>
-</init-param>
- ]]></source>
- then access your OM installation
- </li>
- <li>If you have Problems with conversion-jobs check your openmeetings log
- output (available at <tt>$RED5_HOME/log/openmeetings.log</tt>). There will be error Messages which help you. You must
- install OpenOffice, ImageMagick, GhostScript and SWFTools to run
- all conversion-Jobs correctly.
- </li>
- <li>
- you can query a Mysql Database to get the schema_collection by
- using this query:
- <source><![CDATA[SELECT Table_name, TABLE_COLLATION FROM information_schema.tables WHERE table_schema = 'openmeetings' ORDER BY table_name DESC ]]></source>
- </li>
- </ul>
- </section>
-
- </body>
-
-</document>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Installation</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="OpenMeetings Installation">
+
+ <p>
+ To update from past versions or migrate see <a href="Upgrade.html">Upgrade</a>.<br/>
+ If you are looking for commercial help have a look at
+ <a href="commercial-support.html" target="_blank" rel="nofollow">commercial support</a>.
+ </p>
+ <div>
+ <a href="downloads.html" rel="nofollow">
+ <img src="images/installation_instructions.png" alt="Installation in 3 simple steps" />
+ </a>
+ <p>
+ <i>Note: Openmeetings requires JRE 7/8, JRE 6 is NOT compatible!</i><br />
+ <i>
+ Since Version 2.0 you can also install OpenMeetings from command line. Just cd to the unpacked
+ archive and type ./admin.sh or admin.bat, please see
+ <a href="CommandLineAdmin.html" target="_blank" rel="nofollow">Command Line Admin</a>
+ for more options
+ </i>
+ </p>
+ </div>
+ <ol>
+ <li>
+ <b>Recommendation for production environment</b>
+ <div style="margin-top: 10px; margin-bottom:10px">
+ By default OpenMeetings uses the integrated Apache Derby database.
+ For production environment you should consider using
+ <a href="MySQLConfig.html">MySQL</a>
+ ,
+ <a href="PostgresConfig.html">Postgres</a>
+ , or for example
+ <a href="IBMDB2Config.html">IBM DB2</a>
+ , or
+ <a href="OracleConfig.html">Oracle</a>
+ , or
+ <a href="MSSQLConfig.html">MSSQL</a>
+ </div>
+ </li>
+ <li>
+ <b>Enabling Image Upload and import to whiteboard</b>
+ <div style="margin-top: 10px; margin-bottom:10px">
+ Install
+ <b>ImageMagick</b>
+ on the server, you can get more information on
+ <a href="http://www.imagemagick.org" rel="nofollow" target="_blank">http://www.imagemagick.org
+ </a>
+ regarding installation. The instructions
+ for installation can be
+ found there
+ <a href="http://www.imagemagick.org/script/binary-releases.php"
+ target="_blank" rel="nofollow">http://www.imagemagick.org/script/binary-releases.php
+ </a>
+ ,
+ however on
+ most Linux systems you can get it via your favorite
+ package
+ managers (apt-get it)
+ </div>
+ </li>
+ <li>
+ <b>Enabling import of PDFs into whiteboard</b>
+ <div style="margin-top: 10px; margin-bottom:10px">
+ <ul>
+ <li>
+ Install
+ <b>GhostScript</b>
+ on the server, you can get more
+ information on
+ <a href="http://www.ghostscript.com/download/gsdnld.html" target="_blank"
+ rel="nofollow">
+ http://www.ghostscript.com/download/gsdnld.html
+ </a>
+ regarding
+ installation. The instructions for installation can be
+ found
+ there, however on most Linux systems you can get it via
+ your
+ favorite package managers (apt-get it).
+ </li>
+ <li>
+ Install
+ <b>SWFTools</b>
+ on the server, you can get more information
+ on
+ <a href="http://www.swftools.org/" target="_blank" rel="nofollow">http://www.swftools.org/
+ </a>
+ regarding installation. Some of the
+ Linux distributions already
+ have it in there package manager (see
+ <a href="http://packages.debian.org/unstable/utils/swftools"
+ target="_blank" rel="nofollow">http://packages.debian.org/unstable/utils/swftools
+ </a>
+ ), the
+ recommended version of SWFTools is 0.9 as prior version
+ have a
+ bug that does lead to wrong object dimensions at
+ whiteboard
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li>
+ <b>Enabling import of .doc, .docx, .ppt, .pptx, ... all Office
+ Documents into whitebaord
+ </b>
+ <div style="margin-top: 10px; margin-bottom:10px">
+ <ul>
+ <li>OpenOffice or Libre Office Installed</li>
+ </ul>
+ Since Version 2.x of OpenMeetings it is no more required to start
+ OpenOffice (or Libreoffice) service, see
+ <a href="OpenOfficeConverter.html">OpenOfficeConverter</a>
+ for details
+ </div>
+ </li>
+ <li>
+ <b>Enabling Recording and import of .avi, .flv, .mov and .mp4 into
+ whiteboard
+ </b>
+ <div style="margin-top: 10px; margin-bottom:10px">
+ <ul>
+ <li>
+ Install
+ <b>FFMpeg (with -enabled libmp3lame and libx264 options)</b>
+ . You should get FFMPEG in an up to date copy! OpenMeetings is
+ tested with FFMPEG Version 10.3 and latest build from GIT
+ For Windows you can download a Build for example from
+ <a href="http://ffmpeg.zeranoe.com/builds/" target="_blank"
+ rel="nofollow">http://ffmpeg.zeranoe.com/builds/ </a>
+ Linux or OSx Users should be able to use one of the various
+ Installation Instructions on the Web. You need to enable
+ libmp3lame and libx264!
+ </li>
+ <li>
+ Install
+ <b>SoX</b>
+ <a href="http://sox.sourceforge.net/" target="_blank" rel="nofollow">http://sox.sourceforge.net/
+ </a>
+ . You should install SoX in a up
+ to date copy! SoX 12.xx will NOT
+ work!
+ </li>
+ </ul>
+ </div>
+ </li>
+ </ol>
+
+ </section>
+
+ <section name="Ports, NAT Settings, Customize">
+
+ <p>
+ See
+ <a href="PortSettings.html">PortSettings</a>
+ </p>
+ </section>
+
+ <section name="Hardware Requirements">
+ <ul>
+ <li>
+ Minimalistic requirement (without Document Converters, Recorder and
+ Upload feature) 1GHz CPU 1 GB RAM (
+ <i>server-side</i>
+ )
+ </li>
+ <li>
+ Recommended requirement 2x/4x 2GHz ++ CPU (32 or 64Bit) 4GB RAM. If
+ you have a 64Bit Operating System check if there is a OpenOffice
+ 64Bit Version
+ <a href="http://download.openoffice.org/other.html#de" rel="nofollow">available
+ for your OS
+ </a>
+ (
+ <i>server-side</i>
+ )
+ </li>
+ <li>
+ Headset/Microphone recommendation: Logitech ClearChat PC Wireless,
+ for example from
+ <a
+ href="http://www.amazon.de/Logitech-ClearChat-kabelloser-Kopfh%C3%B6rer-Transmitter/dp/B00166WSN4"
+ rel="nofollow">Amazon</a>
+ or
+ <a
+ href="http://shop.ebay.com/i.html?_nkw=Logitech+ClearChat.+Wireless&_sacat=0&_trksid=p3286.m270.l1313&LH_BIN=1&LH_IncludeSIF=1&_odkw=Logitech+ClearChat+PC&_osacat=0"
+ rel="nofollow">EBay Auctions</a>
+ (
+ <i>cient-side</i>
+ ).
+ <a href="RecommendedHardwareList.html">See all recommendations</a>
+ for cameras, headsets and speakerphones.
+ </li>
+ </ul>
+
+ </section>
+
+ <section name="Debian, Links, Changelog, VoIP">
+ <ul>
+ <li>for VoIP and SIP Integration see also <a href="voip-sip-integration.html">VoIPAndSIP</a></li>
+ <li><a href="http://meetingslive.sourceforge.net/" rel="nofollow">http://meetingslive.sourceforge.net/</a></li>
+ <li>
+ <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Installation of OM 2.0 for Windows XP, 7, 2003, 2008</a>
+ </li>
+ <li>
+ <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">
+ OpenMeetings Installation tutorials by Alvaro Bustos for: Ubuntu, Debian, Mint, MacOS X, CentOS, Fedora,
+ PCLinuxOS, openSUSE and Arch Linux.</a>
+ </li>
+ <li>
+ <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27837303"
+ rel="nofollow">Tutoriales en español relacionados con OpenMeetings</a>
+ </li>
+ <li>
+ <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools"
+ rel="nofollow">Automatic script installation for Ubuntu/Debian (beta)</a>
+ </li>
+ <li>
+ French version of Installation Instructions:
+ <a href="http://flash.54n.free.fr/?/Root/Debian/OpenMeetings-Installation"
+ rel="nofollow">http://flash.54n.free.fr/?/Root/Debian/OpenMeetings-Installation
+ </a>
+ </li>
+ </ul>
+ </section>
+
+ <section name="Tips and Tricks">
+ <ul>
+ <li>
+ Use the Debug-Application: open <tt>$RED5_HOME/webapps/openmeetings/WEB-INF/web.xml</tt> change
+ <source><![CDATA[
+<init-param>
+ <param-name>configuration</param-name>
+ <param-value>DEPLOYMENT</param-value>
+</init-param>
+ ]]></source> to be
+ <source><![CDATA[
+<init-param>
+ <param-name>configuration</param-name>
+ <param-value>DEVELOPMENT</param-value>
+</init-param>
+ ]]></source>
+ then access your OM installation
+ </li>
+ <li>If you have Problems with conversion-jobs check your openmeetings log
+ output (available at <tt>$RED5_HOME/log/openmeetings.log</tt>). There will be error Messages which help you. You must
+ install OpenOffice, ImageMagick, GhostScript and SWFTools to run
+ all conversion-Jobs correctly.
+ </li>
+ <li>
+ you can query a Mysql Database to get the schema_collection by
+ using this query:
+ <source><![CDATA[SELECT Table_name, TABLE_COLLATION FROM information_schema.tables WHERE table_schema = 'openmeetings' ORDER BY table_name DESC ]]></source>
+ </li>
+ </ul>
+ </section>
+
+ </body>
+
+</document>
+
[02/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java
index 4ea4078..c3914a6 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java
@@ -1,128 +1,128 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.test.backup;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT_KEY;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.List;
-
-import org.apache.openmeetings.backup.BackupImport;
-import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.room.RoomGroupDao;
-import org.apache.openmeetings.db.dao.user.GroupDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.basic.Configuration;
-import org.apache.openmeetings.test.AbstractJUnitDefaults;
-import org.junit.After;
-import org.junit.Test;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class TestOldBackups extends AbstractJUnitDefaults {
- private static final Logger log = Red5LoggerFactory.getLogger(TestOldBackups.class, webAppRootKey);
-
- @Autowired
- private BackupImport backupController;
- @Autowired
- private GroupDao groupDao;
- @Autowired
- private UserDao userDao;
- @Autowired
- private RoomDao roomDao;
- @Autowired
- private AppointmentDao appointmentDao;
- @Autowired
- private MeetingMemberDao meetingMemberDao;
- @Autowired
- private RoomGroupDao roomGroupDao;
- private String cryptClass = null;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- // Crypt class need to be preserved here to avoid overriding by backup import
- cryptClass = cfgDao.getCryptKey();
- }
-
- @After
- public void tearDown() {
- List<Configuration> cfgs = cfgDao.get(CONFIG_CRYPT_KEY);
- assertNotNull("Not null list should be returned", cfgs);
- assertEquals("There should be exactly 1 item", 1, cfgs.size());
- Configuration c = cfgs.get(0);
- c.setValue(cryptClass);
- cfgDao.update(c, null);
- }
-
- @Test
- public void importOldVersions() {
- String backupsDir = System.getProperty("backups.dir", ".");
- File backupsHome = new File(backupsDir);
-
- if (!backupsHome.exists() || !backupsHome.isDirectory()) {
- fail("Invalid directory is specified for backup files: " + backupsDir);
- }
- long groupCount = 0;
- long userCount = 0;
- long roomCount = 0;
- long roomGroupCount = 0;
- long apptCount = 0;
- long meetingMembersCount = 0;
- for (File backup : backupsHome.listFiles()) {
- String name = backup.getName();
- log.debug("Import of backup file : '" + name + "' is started ...");
- try (InputStream is = new FileInputStream(backup)) {
- backupController.performImport(is);
- long newGroupCount = groupDao.count();
- long newUserCount = userDao.count();
- long newRoomCount = roomDao.count();
- long newRoomGroupCount = roomGroupDao.get().size();
- long newApptCount = appointmentDao.get().size();
- long newMeetingMembersCount = meetingMemberDao.getMeetingMembers().size();
- assertTrue("Zero groups were imported from " + name, newGroupCount > groupCount);
- assertTrue("Zero users were imported from " + name, newUserCount > userCount);
- assertTrue("Zero rooms were imported from " + name, newRoomCount > roomCount);
- assertTrue("Zero room groups were imported from " + name, newRoomGroupCount > roomGroupCount);
- assertTrue("Zero appointments were imported from " + name, newApptCount > apptCount);
- assertTrue("Zero meeting members were imported from " + name, newMeetingMembersCount > meetingMembersCount);
-
- groupCount = newGroupCount;
- userCount = newUserCount;
- roomCount = newRoomCount;
- roomGroupCount = newRoomGroupCount;
- apptCount = newApptCount;
- meetingMembersCount = newMeetingMembersCount;
- } catch (Exception e) {
- throw new RuntimeException("Unexpected exception while importing backup: " + name, e);
- }
- log.debug("... Done.");
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.test.backup;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.List;
+
+import org.apache.openmeetings.backup.BackupImport;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomGroupDao;
+import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.After;
+import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestOldBackups extends AbstractJUnitDefaults {
+ private static final Logger log = Red5LoggerFactory.getLogger(TestOldBackups.class, webAppRootKey);
+
+ @Autowired
+ private BackupImport backupController;
+ @Autowired
+ private GroupDao groupDao;
+ @Autowired
+ private UserDao userDao;
+ @Autowired
+ private RoomDao roomDao;
+ @Autowired
+ private AppointmentDao appointmentDao;
+ @Autowired
+ private MeetingMemberDao meetingMemberDao;
+ @Autowired
+ private RoomGroupDao roomGroupDao;
+ private String cryptClass = null;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ // Crypt class need to be preserved here to avoid overriding by backup import
+ cryptClass = cfgDao.getCryptKey();
+ }
+
+ @After
+ public void tearDown() {
+ List<Configuration> cfgs = cfgDao.get(CONFIG_CRYPT_KEY);
+ assertNotNull("Not null list should be returned", cfgs);
+ assertEquals("There should be exactly 1 item", 1, cfgs.size());
+ Configuration c = cfgs.get(0);
+ c.setValue(cryptClass);
+ cfgDao.update(c, null);
+ }
+
+ @Test
+ public void importOldVersions() {
+ String backupsDir = System.getProperty("backups.dir", ".");
+ File backupsHome = new File(backupsDir);
+
+ if (!backupsHome.exists() || !backupsHome.isDirectory()) {
+ fail("Invalid directory is specified for backup files: " + backupsDir);
+ }
+ long groupCount = 0;
+ long userCount = 0;
+ long roomCount = 0;
+ long roomGroupCount = 0;
+ long apptCount = 0;
+ long meetingMembersCount = 0;
+ for (File backup : backupsHome.listFiles()) {
+ String name = backup.getName();
+ log.debug("Import of backup file : '" + name + "' is started ...");
+ try (InputStream is = new FileInputStream(backup)) {
+ backupController.performImport(is);
+ long newGroupCount = groupDao.count();
+ long newUserCount = userDao.count();
+ long newRoomCount = roomDao.count();
+ long newRoomGroupCount = roomGroupDao.get().size();
+ long newApptCount = appointmentDao.get().size();
+ long newMeetingMembersCount = meetingMemberDao.getMeetingMembers().size();
+ assertTrue("Zero groups were imported from " + name, newGroupCount > groupCount);
+ assertTrue("Zero users were imported from " + name, newUserCount > userCount);
+ assertTrue("Zero rooms were imported from " + name, newRoomCount > roomCount);
+ assertTrue("Zero room groups were imported from " + name, newRoomGroupCount > roomGroupCount);
+ assertTrue("Zero appointments were imported from " + name, newApptCount > apptCount);
+ assertTrue("Zero meeting members were imported from " + name, newMeetingMembersCount > meetingMembersCount);
+
+ groupCount = newGroupCount;
+ userCount = newUserCount;
+ roomCount = newRoomCount;
+ roomGroupCount = newRoomGroupCount;
+ apptCount = newApptCount;
+ meetingMembersCount = newMeetingMembersCount;
+ } catch (Exception e) {
+ throw new RuntimeException("Unexpected exception while importing backup: " + name, e);
+ }
+ log.debug("... Done.");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
index 6ff7ea0..0cce759 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
@@ -1,105 +1,105 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.test.user;
-
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-import java.util.UUID;
-
-import org.apache.openmeetings.db.dao.user.GroupDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.test.AbstractWicketTester;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class TestUserContact extends AbstractWicketTester {
- @Autowired
- private UserDao userDao;
- @Autowired
- private GroupDao groupDao;
-
- @Test
- public void testGetUser() {
- assertNull("Null should be returned in case User does not exist", userDao.get(Long.MAX_VALUE));
- }
-
- @Test
- public void createUserWithGroup() throws Exception {
- String uuid = UUID.randomUUID().toString();
- User u = getUser(uuid);
- u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
- u = userDao.update(u, null);
- assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), getRandomPass(uuid)));
-
- User u1 = userDao.get(u.getId());
- assertNotNull("Just created user should not be null", u1);
- assertNotNull("Just created user should have non null org-users", u1.getGroupUsers());
- assertFalse("Just created user should have not empty org-users", u1.getGroupUsers().isEmpty());
- }
-
- @Test
- public void testCreateUser() throws Exception {
- String uuid = UUID.randomUUID().toString();
- User u = createUser(uuid);
- assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), getRandomPass(uuid)));
- }
-
- @Test
- public void addContactByOwner() throws Exception {
- login(null, null);
-
- List<User> users = userDao.getAllUsers();
- assertNotNull("User list should not be null ", users);
- assertFalse("User list should not be empty ", users.isEmpty());
-
- User contact = createUserContact(getUserId());
- String email = contact.getAddress().getEmail();
- List<User> l = userDao.get(email, false, 0, 9999);
- // check that contact is visible for admin
- assertNotNull("Contact list should not be null for admin ", l);
- assertFalse("Contact list should not be empty for admin ", l.isEmpty());
-
- // check that contact is visible for owner
- l = userDao.get(email, 0, 9999, null, true, getUserId());
- assertTrue("Contact list should not be empty for owner ", !l.isEmpty());
- //delete contact
- userDao.delete(contact, getUserId());
- l = userDao.get(email, false, 0, 9999);
- assertTrue("Contact list should be empty after deletion", l.isEmpty());
-
- User u = createUser();
- User u1 = createUser();
- contact = createUserContact(u.getId());
- email = contact.getAddress().getEmail();
- // check that contact is not visible for user that is not owner of this contact
- l = userDao.get(email, 0, 9999, null, true, u1.getId());
- assertTrue("Contact list should be empty for another user", l.isEmpty());
- //delete contact
- userDao.delete(contact, u.getId());
- l = userDao.get(email, false, 0, 9999);
- assertTrue("Contact list should be empty after deletion", l.isEmpty());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.test.user;
+
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.test.AbstractWicketTester;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestUserContact extends AbstractWicketTester {
+ @Autowired
+ private UserDao userDao;
+ @Autowired
+ private GroupDao groupDao;
+
+ @Test
+ public void testGetUser() {
+ assertNull("Null should be returned in case User does not exist", userDao.get(Long.MAX_VALUE));
+ }
+
+ @Test
+ public void createUserWithGroup() throws Exception {
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = userDao.update(u, null);
+ assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), getRandomPass(uuid)));
+
+ User u1 = userDao.get(u.getId());
+ assertNotNull("Just created user should not be null", u1);
+ assertNotNull("Just created user should have non null org-users", u1.getGroupUsers());
+ assertFalse("Just created user should have not empty org-users", u1.getGroupUsers().isEmpty());
+ }
+
+ @Test
+ public void testCreateUser() throws Exception {
+ String uuid = UUID.randomUUID().toString();
+ User u = createUser(uuid);
+ assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), getRandomPass(uuid)));
+ }
+
+ @Test
+ public void addContactByOwner() throws Exception {
+ login(null, null);
+
+ List<User> users = userDao.getAllUsers();
+ assertNotNull("User list should not be null ", users);
+ assertFalse("User list should not be empty ", users.isEmpty());
+
+ User contact = createUserContact(getUserId());
+ String email = contact.getAddress().getEmail();
+ List<User> l = userDao.get(email, false, 0, 9999);
+ // check that contact is visible for admin
+ assertNotNull("Contact list should not be null for admin ", l);
+ assertFalse("Contact list should not be empty for admin ", l.isEmpty());
+
+ // check that contact is visible for owner
+ l = userDao.get(email, 0, 9999, null, true, getUserId());
+ assertTrue("Contact list should not be empty for owner ", !l.isEmpty());
+ //delete contact
+ userDao.delete(contact, getUserId());
+ l = userDao.get(email, false, 0, 9999);
+ assertTrue("Contact list should be empty after deletion", l.isEmpty());
+
+ User u = createUser();
+ User u1 = createUser();
+ contact = createUserContact(u.getId());
+ email = contact.getAddress().getEmail();
+ // check that contact is not visible for user that is not owner of this contact
+ l = userDao.get(email, 0, 9999, null, true, u1.getId());
+ assertTrue("Contact list should be empty for another user", l.isEmpty());
+ //delete contact
+ userDao.delete(contact, u.getId());
+ l = userDao.get(email, false, 0, 9999);
+ assertTrue("Contact list should be empty after deletion", l.isEmpty());
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserCount.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserCount.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserCount.java
index 0fba6e5..530dae7 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserCount.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserCount.java
@@ -1,58 +1,58 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.test.user;
-
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.test.AbstractWicketTester;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class TestUserCount extends AbstractWicketTester {
- @Autowired
- private UserDao userDao;
-
- @Test
- public void testCountSearchUsers() throws Exception {
- User u = createUser();
- assertTrue("Account of search users should be one", userDao.count(u.getFirstname()) == 1);
- }
-
- @Test
- public void testCountFilteredUsers() throws Exception {
- User u = createUser();
- User contact = createUserContact(u.getId());
- assertTrue("Account of filtered user should be one", userDao.count(contact.getFirstname(), true, u.getId()) == 1);
- }
-
- @Test
- public void testCountUnfilteredUsers() throws Exception {
- User u = createUser();
- createUserContact(u.getId());
- assertTrue("Account of unfiltered should be more then one", userDao.count("firstname", false, getUserId()) > 1);
- }
-
- @Test
- public void testCountAllUsers() {
- assertTrue("Account of users should be positive", userDao.count() > 0);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.test.user;
+
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.test.AbstractWicketTester;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestUserCount extends AbstractWicketTester {
+ @Autowired
+ private UserDao userDao;
+
+ @Test
+ public void testCountSearchUsers() throws Exception {
+ User u = createUser();
+ assertTrue("Account of search users should be one", userDao.count(u.getFirstname()) == 1);
+ }
+
+ @Test
+ public void testCountFilteredUsers() throws Exception {
+ User u = createUser();
+ User contact = createUserContact(u.getId());
+ assertTrue("Account of filtered user should be one", userDao.count(contact.getFirstname(), true, u.getId()) == 1);
+ }
+
+ @Test
+ public void testCountUnfilteredUsers() throws Exception {
+ User u = createUser();
+ createUserContact(u.getId());
+ assertTrue("Account of unfiltered should be more then one", userDao.count("firstname", false, getUserId()) > 1);
+ }
+
+ @Test
+ public void testCountAllUsers() {
+ assertTrue("Account of users should be positive", userDao.count() > 0);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java
index 949c79e..919f9df 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ServerWebService.java
@@ -1,180 +1,180 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.webservice;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.apache.openmeetings.webservice.Constants.TNS;
-
-import java.util.List;
-
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-
-import org.apache.cxf.feature.Features;
-import org.apache.openmeetings.db.dao.server.ServerDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.dto.basic.ServiceResult;
-import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
-import org.apache.openmeetings.db.dto.server.ServerDTO;
-import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.db.entity.server.Sessiondata;
-import org.apache.openmeetings.db.util.AuthLevelUtil;
-import org.apache.openmeetings.webservice.error.ServiceException;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * This class provides method implementations necessary for OM to manage servers
- * participating in cluster.
- *
- * @author solomax, sebawagner
- *
- */
-@WebService(serviceName="org.apache.openmeetings.webservice.ServerWebService", targetNamespace = TNS)
-@Features(features = "org.apache.cxf.feature.LoggingFeature")
-@Produces({MediaType.APPLICATION_JSON})
-@Path("/server")
-public class ServerWebService {
- private static final Logger log = Red5LoggerFactory.getLogger(ServerWebService.class, webAppRootKey);
-
- @Autowired
- private SessiondataDao sessionDao;
- @Autowired
- private UserDao userDao;
- @Autowired
- private ServerDao serverDao;
-
- /**
- * Method to retrieve the list of the servers participating in cluster
- *
- * @param sid
- * - session id to identify the user making request
- * @param start
- * - server index to start with
- * @param max
- * - Maximum server count
- * @return The list of servers participating in cluster
- */
- @WebMethod
- @GET
- @Path("/{start}/{max}")
- public List<ServerDTO> getServers(@QueryParam("sid") @WebParam(name="sid") String sid
- , @PathParam("start") @WebParam(name="start") int start
- , @PathParam("max") @WebParam(name="max") int max
- ) throws ServiceException
- {
- log.debug("getServers enter");
- Sessiondata sd = sessionDao.check(sid);
-
- if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
- return ServerDTO.list(serverDao.get(start, max));
- } else {
- log.warn("Insuffisient permissions");
- throw new ServiceException("Insufficient permissions"); //TODO code -26
- }
- }
-
- /**
- * Method to retrieve the total count of the servers participating in
- * cluster
- *
- * @param sid
- * - session id to identify the user making request
- * @return total count of the servers participating in cluster
- */
- @WebMethod
- @GET
- @Path("/count")
- public long count(@QueryParam("sid") @WebParam(name="sid") String sid) throws ServiceException {
- log.debug("getServerCount enter");
- Sessiondata sd = sessionDao.check(sid);
-
- if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
- return serverDao.count();
- } else {
- throw new ServiceException("Insufficient permissions"); //TODO code -26
- }
- }
-
- /**
- * Method to add/update server
- *
- * @param sid
- * - session id to identify the user making request
- * @param server
- * - server to add/update
- * @return the id of saved server
- */
- @WebMethod
- @POST
- @Path("/")
- public ServerDTO add(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="server") @QueryParam("server") ServerDTO server) throws ServiceException {
- log.debug("saveServerCount enter");
- Sessiondata sd = sessionDao.check(sid);
- Long userId = sd.getUserId();
- if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
- Server s = server.get();
- return new ServerDTO(serverDao.update(s, userId));
- } else {
- log.warn("Insuffisient permissions");
- throw new ServiceException("Insufficient permissions"); //TODO code -26
- }
- }
-
- /**
- * Method to delete server
- *
- * @param sid
- * - session id to identify the user making request
- * @param id
- * - the id of the server to delete
- * @return true if the server was deleted, false otherwise
- */
- @WebMethod
- @DELETE
- @Path("/{id}")
- public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
- log.debug("saveServerCount enter");
- Sessiondata sd = sessionDao.check(sid);
- Long userId = sd.getUserId();
-
- if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
- Server s = serverDao.get(id);
- if (s != null) {
- serverDao.delete(s, userId);
- return new ServiceResult(id, "Deleted", Type.SUCCESS);
- }
- return new ServiceResult(0L, "Not found", Type.SUCCESS);
- } else {
- log.warn("Insuffisient permissions");
- throw new ServiceException("Insufficient permissions"); //TODO code -26
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.webservice;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.webservice.Constants.TNS;
+
+import java.util.List;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebService;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.cxf.feature.Features;
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
+import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
+import org.apache.openmeetings.db.dto.server.ServerDTO;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.webservice.error.ServiceException;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * This class provides method implementations necessary for OM to manage servers
+ * participating in cluster.
+ *
+ * @author solomax, sebawagner
+ *
+ */
+@WebService(serviceName="org.apache.openmeetings.webservice.ServerWebService", targetNamespace = TNS)
+@Features(features = "org.apache.cxf.feature.LoggingFeature")
+@Produces({MediaType.APPLICATION_JSON})
+@Path("/server")
+public class ServerWebService {
+ private static final Logger log = Red5LoggerFactory.getLogger(ServerWebService.class, webAppRootKey);
+
+ @Autowired
+ private SessiondataDao sessionDao;
+ @Autowired
+ private UserDao userDao;
+ @Autowired
+ private ServerDao serverDao;
+
+ /**
+ * Method to retrieve the list of the servers participating in cluster
+ *
+ * @param sid
+ * - session id to identify the user making request
+ * @param start
+ * - server index to start with
+ * @param max
+ * - Maximum server count
+ * @return The list of servers participating in cluster
+ */
+ @WebMethod
+ @GET
+ @Path("/{start}/{max}")
+ public List<ServerDTO> getServers(@QueryParam("sid") @WebParam(name="sid") String sid
+ , @PathParam("start") @WebParam(name="start") int start
+ , @PathParam("max") @WebParam(name="max") int max
+ ) throws ServiceException
+ {
+ log.debug("getServers enter");
+ Sessiondata sd = sessionDao.check(sid);
+
+ if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
+ return ServerDTO.list(serverDao.get(start, max));
+ } else {
+ log.warn("Insuffisient permissions");
+ throw new ServiceException("Insufficient permissions"); //TODO code -26
+ }
+ }
+
+ /**
+ * Method to retrieve the total count of the servers participating in
+ * cluster
+ *
+ * @param sid
+ * - session id to identify the user making request
+ * @return total count of the servers participating in cluster
+ */
+ @WebMethod
+ @GET
+ @Path("/count")
+ public long count(@QueryParam("sid") @WebParam(name="sid") String sid) throws ServiceException {
+ log.debug("getServerCount enter");
+ Sessiondata sd = sessionDao.check(sid);
+
+ if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
+ return serverDao.count();
+ } else {
+ throw new ServiceException("Insufficient permissions"); //TODO code -26
+ }
+ }
+
+ /**
+ * Method to add/update server
+ *
+ * @param sid
+ * - session id to identify the user making request
+ * @param server
+ * - server to add/update
+ * @return the id of saved server
+ */
+ @WebMethod
+ @POST
+ @Path("/")
+ public ServerDTO add(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="server") @QueryParam("server") ServerDTO server) throws ServiceException {
+ log.debug("saveServerCount enter");
+ Sessiondata sd = sessionDao.check(sid);
+ Long userId = sd.getUserId();
+ if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+ Server s = server.get();
+ return new ServerDTO(serverDao.update(s, userId));
+ } else {
+ log.warn("Insuffisient permissions");
+ throw new ServiceException("Insufficient permissions"); //TODO code -26
+ }
+ }
+
+ /**
+ * Method to delete server
+ *
+ * @param sid
+ * - session id to identify the user making request
+ * @param id
+ * - the id of the server to delete
+ * @return true if the server was deleted, false otherwise
+ */
+ @WebMethod
+ @DELETE
+ @Path("/{id}")
+ public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
+ log.debug("saveServerCount enter");
+ Sessiondata sd = sessionDao.check(sid);
+ Long userId = sd.getUserId();
+
+ if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+ Server s = serverDao.get(id);
+ if (s != null) {
+ serverDao.delete(s, userId);
+ return new ServiceResult(id, "Deleted", Type.SUCCESS);
+ }
+ return new ServiceResult(0L, "Not found", Type.SUCCESS);
+ } else {
+ log.warn("Insuffisient permissions");
+ throw new ServiceException("Insufficient permissions"); //TODO code -26
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/SlaveHTTPConnectionManager.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/SlaveHTTPConnectionManager.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/SlaveHTTPConnectionManager.java
index ad3cdf7..1f83615 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/SlaveHTTPConnectionManager.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/SlaveHTTPConnectionManager.java
@@ -1,99 +1,99 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.webservice.cluster;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.openmeetings.core.remote.ISlaveHTTPConnectionManager;
-import org.apache.openmeetings.db.entity.server.Server;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-/**
- * Manages connections to the other nodes of the cluster.
- *
- * Use-case: When you kick a user via the admin-panel, it is probably on anther server.
- * So you need to perform a REST call to the node and let that node do the actual disconnect.
- *
- * @author sebawagner
- *
- */
-public class SlaveHTTPConnectionManager implements ISlaveHTTPConnectionManager {
- private static Logger log = Red5LoggerFactory.getLogger(SlaveHTTPConnectionManager.class, webAppRootKey);
-
- /**
- * We store the list of RestClients in the memory, so that we can simply
- * call ping to get the load, without the need to get a new session Hash and
- * to login again. <br/>
- * There can be only one RestClient per server, so we use the primary key of
- * the server to store the RestClient.
- */
- private static Map<Long, RestClient> restClientsSessionStore = new ConcurrentHashMap<>();
-
- /**
- * Synchronized, cause nobody should manipulate the object while another
- * process requests it, the scheduler could run several times and request
- * the same object, add or remove it.<br/>
- * If there is no object yet, create one.
- *
- * @param server
- */
- private static RestClient getRestClient(Server server) {
- RestClient restClient = restClientsSessionStore.get(server.getId());
-
- // check if any values of the server have been changed,
- // if yes, we need a new RestClient to make sure it will re-login to the
- // changed server details
- if (restClient != null && restClient.hasServerDetailsChanged(server)) {
- log.debug("Server details changed, get new rest client");
- restClient = null;
- }
-
- if (restClient == null) {
- restClient = new RestClient(server);
- restClientsSessionStore.put(server.getId(), restClient);
- }
- return restClient;
- }
-
- /**
- * Gets the current {@link RestClient} from the session store and then
- * performs a kickUser on that. It is not possible that there is no
- * {@link RestClient}, because if you want to kick a user from a slave, the
- * master <i>must</i> already have loaded the sessions from the slave, so
- * there logically <i>must</i> by a {@link RestClient} available that has an
- * open connection to that slave / {@link Server}
- *
- * @param serverId
- * @param publicSID
- */
- @Override
- public void kickSlaveUser(Server server, String publicSID) throws Exception {
- RestClient rClient = getRestClient(server);
-
- if (rClient == null) {
- throw new Exception("No RestClient found for server " + server);
- }
-
- rClient.kickUser(publicSID);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.webservice.cluster;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.openmeetings.core.remote.ISlaveHTTPConnectionManager;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * Manages connections to the other nodes of the cluster.
+ *
+ * Use-case: When you kick a user via the admin-panel, it is probably on anther server.
+ * So you need to perform a REST call to the node and let that node do the actual disconnect.
+ *
+ * @author sebawagner
+ *
+ */
+public class SlaveHTTPConnectionManager implements ISlaveHTTPConnectionManager {
+ private static Logger log = Red5LoggerFactory.getLogger(SlaveHTTPConnectionManager.class, webAppRootKey);
+
+ /**
+ * We store the list of RestClients in the memory, so that we can simply
+ * call ping to get the load, without the need to get a new session Hash and
+ * to login again. <br/>
+ * There can be only one RestClient per server, so we use the primary key of
+ * the server to store the RestClient.
+ */
+ private static Map<Long, RestClient> restClientsSessionStore = new ConcurrentHashMap<>();
+
+ /**
+ * Synchronized, cause nobody should manipulate the object while another
+ * process requests it, the scheduler could run several times and request
+ * the same object, add or remove it.<br/>
+ * If there is no object yet, create one.
+ *
+ * @param server
+ */
+ private static RestClient getRestClient(Server server) {
+ RestClient restClient = restClientsSessionStore.get(server.getId());
+
+ // check if any values of the server have been changed,
+ // if yes, we need a new RestClient to make sure it will re-login to the
+ // changed server details
+ if (restClient != null && restClient.hasServerDetailsChanged(server)) {
+ log.debug("Server details changed, get new rest client");
+ restClient = null;
+ }
+
+ if (restClient == null) {
+ restClient = new RestClient(server);
+ restClientsSessionStore.put(server.getId(), restClient);
+ }
+ return restClient;
+ }
+
+ /**
+ * Gets the current {@link RestClient} from the session store and then
+ * performs a kickUser on that. It is not possible that there is no
+ * {@link RestClient}, because if you want to kick a user from a slave, the
+ * master <i>must</i> already have loaded the sessions from the slave, so
+ * there logically <i>must</i> by a {@link RestClient} available that has an
+ * open connection to that slave / {@link Server}
+ *
+ * @param serverId
+ * @param publicSID
+ */
+ @Override
+ public void kickSlaveUser(Server server, String publicSID) throws Exception {
+ RestClient rClient = getRestClient(server);
+
+ if (rClient == null) {
+ throw new Exception("No RestClient found for server " + server);
+ }
+
+ rClient.kickUser(publicSID);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-webservice/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/site/site.xml b/openmeetings-webservice/src/site/site.xml
index c26954e..0d9f35c 100644
--- a/openmeetings-webservice/src/site/site.xml
+++ b/openmeetings-webservice/src/site/site.xml
@@ -1,40 +1,40 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu ref="parent"/>
- <menu name="Project">
- <item name="About" href="/index.html" />
- <item name="Info" href="/project-info.html" />
- <item name="Summary" href="/project-summary.html" />
- <item name="License" href="/license.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Dependency Convergence" href="/dependency-convergence.html" />
- <item name="RAT Report" href="/rat-report.html" />
- <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <bottomNav maxSpan="12">
- <column>Parent Project</column>
- <column>Project</column>
- </bottomNav>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu ref="parent"/>
+ <menu name="Project">
+ <item name="About" href="/index.html" />
+ <item name="Info" href="/project-info.html" />
+ <item name="Summary" href="/project-summary.html" />
+ <item name="License" href="/license.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Dependency Convergence" href="/dependency-convergence.html" />
+ <item name="RAT Report" href="/rat-report.html" />
+ <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <bottomNav maxSpan="12">
+ <column>Parent Project</column>
+ <column>Project</column>
+ </bottomNav>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/src/site/site.xml
----------------------------------------------------------------------
diff --git a/src/site/site.xml b/src/site/site.xml
index aa78843..5727f48 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -1,77 +1,77 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <bannerLeft>
- <name>Apache OpenMeetings</name>
- <src>http://openmeetings.apache.org/images/logo.png</src>
- <href>http://openmeetings.apache.org/index.html</href>
- </bannerLeft>
- <bannerRight>
- <name>Apache</name>
- <src>http://apache.org/img/asf_logo.png</src>
- <href>http://apache.org</href>
- </bannerRight>
-
- <skin>
- <groupId>lt.velykis.maven.skins</groupId>
- <artifactId>reflow-maven-skin</artifactId>
- <version>1.1.1</version>
- </skin>
-
- <version position="none"/>
-
- <body>
- <head><![CDATA[
- <link rel="stylesheet" href="$resourcePath/css/site.css"/>
- ]]></head>
- <links>
- <item name="Demo" href="http://openmeetings.apache.org/demo.html"/>
- <item name="Download" href="http://openmeetings.apache.org/downloads.html"/>
- <item name="Wiki" href="https://cwiki.apache.org/confluence/display/OPENMEETINGS"/>
- </links>
- <menu ref="modules" inherit="top"/>
- </body>
-
- <poweredBy></poweredBy>
-
- <custom>
- <reflowSkin>
- <brand>
- <name><![CDATA[
- <span class="color-highlight">Apache</span> OpenMeetings
- ]]></name>
- </brand>
- <!--absoluteResourceURL>http://localhost:5080/openmeetings/docs</absoluteResourceURL--><!-- DEVELOPMENT -->
- <absoluteResourceURL>http://openmeetings.apache.org</absoluteResourceURL>
- <protocolRelativeURLs>true</protocolRelativeURLs>
- <localResources>true</localResources>
- <theme>site</theme><!-- http://bootswatch.com/2/cerulean offline -->
- <bottomNav maxSpan="12">
- <column>General</column>
- <column>Installation</column>
- <column>Community</column>
- <column>Development</column>
- </bottomNav>
- <toc>sidebar</toc>
- <skinAttribution>false</skinAttribution>
- <endContent>
- <script src="$resourcePath/js/site.js"></script>
- </endContent>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <bannerLeft>
+ <name>Apache OpenMeetings</name>
+ <src>http://openmeetings.apache.org/images/logo.png</src>
+ <href>http://openmeetings.apache.org/index.html</href>
+ </bannerLeft>
+ <bannerRight>
+ <name>Apache</name>
+ <src>http://apache.org/img/asf_logo.png</src>
+ <href>http://apache.org</href>
+ </bannerRight>
+
+ <skin>
+ <groupId>lt.velykis.maven.skins</groupId>
+ <artifactId>reflow-maven-skin</artifactId>
+ <version>1.1.1</version>
+ </skin>
+
+ <version position="none"/>
+
+ <body>
+ <head><![CDATA[
+ <link rel="stylesheet" href="$resourcePath/css/site.css"/>
+ ]]></head>
+ <links>
+ <item name="Demo" href="http://openmeetings.apache.org/demo.html"/>
+ <item name="Download" href="http://openmeetings.apache.org/downloads.html"/>
+ <item name="Wiki" href="https://cwiki.apache.org/confluence/display/OPENMEETINGS"/>
+ </links>
+ <menu ref="modules" inherit="top"/>
+ </body>
+
+ <poweredBy></poweredBy>
+
+ <custom>
+ <reflowSkin>
+ <brand>
+ <name><![CDATA[
+ <span class="color-highlight">Apache</span> OpenMeetings
+ ]]></name>
+ </brand>
+ <!--absoluteResourceURL>http://localhost:5080/openmeetings/docs</absoluteResourceURL--><!-- DEVELOPMENT -->
+ <absoluteResourceURL>http://openmeetings.apache.org</absoluteResourceURL>
+ <protocolRelativeURLs>true</protocolRelativeURLs>
+ <localResources>true</localResources>
+ <theme>site</theme><!-- http://bootswatch.com/2/cerulean offline -->
+ <bottomNav maxSpan="12">
+ <column>General</column>
+ <column>Installation</column>
+ <column>Community</column>
+ <column>Development</column>
+ </bottomNav>
+ <toc>sidebar</toc>
+ <skinAttribution>false</skinAttribution>
+ <endContent>
+ <script src="$resourcePath/js/site.js"></script>
+ </endContent>
+ </reflowSkin>
+ </custom>
+</project>
[07/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
index dd6c2a7..81c8468 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
@@ -1,177 +1,177 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.common;
-
-import java.io.Serializable;
-import java.util.function.Consumer;
-
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.markup.html.border.Border;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.panel.EmptyPanel;
-import org.apache.wicket.model.Model;
-
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
-import com.googlecode.wicket.jquery.ui.widget.dialog.MessageFormDialog;
-
-public abstract class ConfirmableAjaxBorder extends Border {
- private static final long serialVersionUID = 1L;
- private static final String DIALOG_ID = "dialog";
- protected final Form<?> form = new Form<>("form");
- private final ConfirmableBorderDialog dialog;
-
- public ConfirmableAjaxBorder(String id, String title, String message) {
- this(id, title, message, null, null);
- }
-
- public ConfirmableAjaxBorder(String id, String title, String message, Form<?> form) {
- this(id, title, message, form, null);
- }
-
- public ConfirmableAjaxBorder(String id, String title, String message, ConfirmableBorderDialog dialog) {
- this(id, title, message, null, dialog);
- }
-
- public ConfirmableAjaxBorder(String id, String title, String message, Form<?> userForm, ConfirmableBorderDialog dialog) {
- super(id, Model.of(message));
- if (dialog == null) {
- this.dialog = new ConfirmableBorderDialog(DIALOG_ID, title, message, userForm == null ? form : userForm);
- form.add(this.dialog);
- } else {
- this.dialog = dialog;
- form.add(new EmptyPanel(DIALOG_ID));
- }
- this.dialog.setSubmitHandler((Consumer<AjaxRequestTarget> & Serializable)(t)->onSubmit(t));
- this.dialog.setErrorHandler((Consumer<AjaxRequestTarget> & Serializable)(t)->onError(t));
- setOutputMarkupId(true);
- }
-
- public AbstractFormDialog<?> getDialog() {
- return dialog;
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
- super.updateAjaxAttributes(attributes);
- ConfirmableAjaxBorder.this.updateAjaxAttributes(attributes);
- }
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- if (isClickable()) {
- dialog.open(target);
- }
- }
- });
- addToBorder(form);
- }
-
- protected boolean isClickable() {
- return true;
- }
-
- /**
- * Gives a chance to the specializations to modify the attributes.
- *
- * @param attributes attributes
- */
- protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
- }
-
- protected void onEvent(AjaxRequestTarget target) {
- dialog.open(target);
- }
-
- /**
- * Triggered when the form is submitted, but the validation failed
- *
- * @param target the {@link AjaxRequestTarget}
- * @param form the {@link Form}
- */
- protected void onError(AjaxRequestTarget target) {
- }
-
- /**
- * Triggered when the form is submitted, and the validation succeed
- *
- * @param target the {@link AjaxRequestTarget}
- * @param form the {@link Form}
- */
- protected abstract void onSubmit(AjaxRequestTarget target);
-
- public static class ConfirmableBorderDialog extends MessageFormDialog {
- private static final long serialVersionUID = 1L;
- private Form<?> form;
- private Consumer<AjaxRequestTarget> submitHandler = null;
- private Consumer<AjaxRequestTarget> errorHandler = null;
-
- public ConfirmableBorderDialog(String id, String title, String message) {
- this(id, title, message, null);
- }
-
- public ConfirmableBorderDialog(String id, String title, String message, Form<?> form) {
- super(id, title, message, DialogButtons.OK_CANCEL, DialogIcon.WARN);
- this.form = form;
- }
-
- public void setSubmitHandler(Consumer<AjaxRequestTarget> submitHandler) {
- this.submitHandler = submitHandler;
- }
-
- public void setErrorHandler(Consumer<AjaxRequestTarget> errorHandler) {
- this.errorHandler = errorHandler;
- }
-
- @Override
- public DialogButton getSubmitButton() {
- return this.findButton(OK);
- }
-
- @Override
- public Form<?> getForm() {
- return this.form;
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- super.close(target, null); // closes the dialog on error.
- if (errorHandler != null) {
- errorHandler.accept(target);
- }
- }
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- if (submitHandler != null) {
- submitHandler.accept(target);
- }
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import java.io.Serializable;
+import java.util.function.Consumer;
+
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.markup.html.border.Border;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageFormDialog;
+
+public abstract class ConfirmableAjaxBorder extends Border {
+ private static final long serialVersionUID = 1L;
+ private static final String DIALOG_ID = "dialog";
+ protected final Form<?> form = new Form<>("form");
+ private final ConfirmableBorderDialog dialog;
+
+ public ConfirmableAjaxBorder(String id, String title, String message) {
+ this(id, title, message, null, null);
+ }
+
+ public ConfirmableAjaxBorder(String id, String title, String message, Form<?> form) {
+ this(id, title, message, form, null);
+ }
+
+ public ConfirmableAjaxBorder(String id, String title, String message, ConfirmableBorderDialog dialog) {
+ this(id, title, message, null, dialog);
+ }
+
+ public ConfirmableAjaxBorder(String id, String title, String message, Form<?> userForm, ConfirmableBorderDialog dialog) {
+ super(id, Model.of(message));
+ if (dialog == null) {
+ this.dialog = new ConfirmableBorderDialog(DIALOG_ID, title, message, userForm == null ? form : userForm);
+ form.add(this.dialog);
+ } else {
+ this.dialog = dialog;
+ form.add(new EmptyPanel(DIALOG_ID));
+ }
+ this.dialog.setSubmitHandler((Consumer<AjaxRequestTarget> & Serializable)(t)->onSubmit(t));
+ this.dialog.setErrorHandler((Consumer<AjaxRequestTarget> & Serializable)(t)->onError(t));
+ setOutputMarkupId(true);
+ }
+
+ public AbstractFormDialog<?> getDialog() {
+ return dialog;
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+ super.updateAjaxAttributes(attributes);
+ ConfirmableAjaxBorder.this.updateAjaxAttributes(attributes);
+ }
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ if (isClickable()) {
+ dialog.open(target);
+ }
+ }
+ });
+ addToBorder(form);
+ }
+
+ protected boolean isClickable() {
+ return true;
+ }
+
+ /**
+ * Gives a chance to the specializations to modify the attributes.
+ *
+ * @param attributes attributes
+ */
+ protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+ }
+
+ protected void onEvent(AjaxRequestTarget target) {
+ dialog.open(target);
+ }
+
+ /**
+ * Triggered when the form is submitted, but the validation failed
+ *
+ * @param target the {@link AjaxRequestTarget}
+ * @param form the {@link Form}
+ */
+ protected void onError(AjaxRequestTarget target) {
+ }
+
+ /**
+ * Triggered when the form is submitted, and the validation succeed
+ *
+ * @param target the {@link AjaxRequestTarget}
+ * @param form the {@link Form}
+ */
+ protected abstract void onSubmit(AjaxRequestTarget target);
+
+ public static class ConfirmableBorderDialog extends MessageFormDialog {
+ private static final long serialVersionUID = 1L;
+ private Form<?> form;
+ private Consumer<AjaxRequestTarget> submitHandler = null;
+ private Consumer<AjaxRequestTarget> errorHandler = null;
+
+ public ConfirmableBorderDialog(String id, String title, String message) {
+ this(id, title, message, null);
+ }
+
+ public ConfirmableBorderDialog(String id, String title, String message, Form<?> form) {
+ super(id, title, message, DialogButtons.OK_CANCEL, DialogIcon.WARN);
+ this.form = form;
+ }
+
+ public void setSubmitHandler(Consumer<AjaxRequestTarget> submitHandler) {
+ this.submitHandler = submitHandler;
+ }
+
+ public void setErrorHandler(Consumer<AjaxRequestTarget> errorHandler) {
+ this.errorHandler = errorHandler;
+ }
+
+ @Override
+ public DialogButton getSubmitButton() {
+ return this.findButton(OK);
+ }
+
+ @Override
+ public Form<?> getForm() {
+ return this.form;
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ super.close(target, null); // closes the dialog on error.
+ if (errorHandler != null) {
+ errorHandler.accept(target);
+ }
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ if (submitHandler != null) {
+ submitHandler.accept(target);
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
index 3f72418..24c7a40 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
@@ -1,27 +1,27 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div id="header">
- <span wicket:id="appName"></span>
- </div>
- </wicket:panel>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div id="header">
+ <span wicket:id="appName"></span>
+ </div>
+ </wicket:panel>
</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.java
index 16dfd76..5c1218e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.java
@@ -1,32 +1,32 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.common;
-
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.util.string.Strings;
-
-public class HeaderPanel extends BasePanel {
- private static final long serialVersionUID = 1L;
-
- public HeaderPanel(String id, String appName) {
- super(id);
- setOutputMarkupPlaceholderTag(true);
- add(new Label("appName", Strings.isEmpty(appName) ? " " : appName).setEscapeModelStrings(false));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.util.string.Strings;
+
+public class HeaderPanel extends BasePanel {
+ private static final long serialVersionUID = 1L;
+
+ public HeaderPanel(String id, String appName) {
+ super(id);
+ setOutputMarkupPlaceholderTag(true);
+ add(new Label("appName", Strings.isEmpty(appName) ? " " : appName).setEscapeModelStrings(false));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.html
index 9b178ca..d9e9391 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.html
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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.
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <a wicket:id="first" class="goto icon ui-icon ui-icon-seek-first"></a>
- <a wicket:id="prev" class="goto icon ui-icon ui-icon-seek-prev"></a>
- <span wicket:id="navigation" class="goto">
- <a wicket:id="pageLink" href="#"><span wicket:id="pageNumber">5</span></a>
- </span>
- <a wicket:id="next" class="goto icon ui-icon ui-icon-seek-next"></a>
- <a wicket:id="last" class="goto icon ui-icon ui-icon-seek-end"></a>
- </wicket:panel>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <a wicket:id="first" class="goto icon ui-icon ui-icon-seek-first"></a>
+ <a wicket:id="prev" class="goto icon ui-icon ui-icon-seek-prev"></a>
+ <span wicket:id="navigation" class="goto">
+ <a wicket:id="pageLink" href="#"><span wicket:id="pageNumber">5</span></a>
+ </span>
+ <a wicket:id="next" class="goto icon ui-icon ui-icon-seek-next"></a>
+ <a wicket:id="last" class="goto icon ui-icon ui-icon-seek-end"></a>
+ </wicket:panel>
</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
index 596ab5f..8f5b7cf 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
@@ -1,32 +1,32 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.common;
-
-import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
-import org.apache.wicket.markup.html.navigation.paging.IPageable;
-
-public class OmPagingNavigator extends AjaxPagingNavigator {
-
- private static final long serialVersionUID = 1L;
-
- public OmPagingNavigator(String id, IPageable pageable) {
- super(id, pageable);
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
+import org.apache.wicket.markup.html.navigation.paging.IPageable;
+
+public class OmPagingNavigator extends AjaxPagingNavigator {
+
+ private static final long serialVersionUID = 1L;
+
+ public OmPagingNavigator(String id, IPageable pageable) {
+ super(id, pageable);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.html
index 0912301..c9f997f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.html
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <div wicket:id="menu" class="ui-widget-header"></div>
-</wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div wicket:id="menu" class="ui-widget-header"></div>
+</wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
index f22381f..b15d93d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
@@ -1,69 +1,69 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.common.menu;
-
-import java.util.List;
-
-import org.apache.openmeetings.web.common.BasePanel;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.util.string.Strings;
-
-import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
-import com.googlecode.wicket.jquery.ui.widget.menu.Menu;
-
-/**
- * Loads the menu items into the main area
- *
- * @author sebawagner
- *
- */
-public class MenuPanel extends BasePanel {
- private static final long serialVersionUID = 1L;
-
- public MenuPanel(String id, List<IMenuItem> menus) {
- super(id);
- setOutputMarkupPlaceholderTag(true);
- setMarkupId(id);
- add(new Menu("menu", menus, new Options().set("icons", "{ submenu: 'ui-icon-triangle-1-s' }")
- .set("position", "{ my: 'left top', at: 'left bottom'}"))
- {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void addMenuItem(ListItem<IMenuItem> item, IMenuItem menuItem) {
- super.addMenuItem(item, menuItem);
- MenuItem m = (MenuItem)menuItem;
- item.add(AttributeModifier.append("class", m.isTop() ? "top" : "sub"));
- if (!Strings.isEmpty(m.getDesc())) {
- item.add(AttributeModifier.append("title", m.getDesc()));
- }
- if (!Strings.isEmpty(m.getIcon())) {
- item.add(AttributeModifier.append("class", m.getIcon()));
- }
- }
- });
- }
-
- public void update(IPartialPageRequestHandler target) {
- target.add(this);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.common.menu;
+
+import java.util.List;
+
+import org.apache.openmeetings.web.common.BasePanel;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.util.string.Strings;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
+import com.googlecode.wicket.jquery.ui.widget.menu.Menu;
+
+/**
+ * Loads the menu items into the main area
+ *
+ * @author sebawagner
+ *
+ */
+public class MenuPanel extends BasePanel {
+ private static final long serialVersionUID = 1L;
+
+ public MenuPanel(String id, List<IMenuItem> menus) {
+ super(id);
+ setOutputMarkupPlaceholderTag(true);
+ setMarkupId(id);
+ add(new Menu("menu", menus, new Options().set("icons", "{ submenu: 'ui-icon-triangle-1-s' }")
+ .set("position", "{ my: 'left top', at: 'left bottom'}"))
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void addMenuItem(ListItem<IMenuItem> item, IMenuItem menuItem) {
+ super.addMenuItem(item, menuItem);
+ MenuItem m = (MenuItem)menuItem;
+ item.add(AttributeModifier.append("class", m.isTop() ? "top" : "sub"));
+ if (!Strings.isEmpty(m.getDesc())) {
+ item.add(AttributeModifier.append("title", m.getDesc()));
+ }
+ if (!Strings.isEmpty(m.getIcon())) {
+ item.add(AttributeModifier.append("class", m.getIcon()));
+ }
+ }
+ });
+ }
+
+ public void update(IPartialPageRequestHandler target) {
+ target.add(this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/DataViewContainer.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/DataViewContainer.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/DataViewContainer.java
index bef8153..a9fd58d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/DataViewContainer.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/DataViewContainer.java
@@ -1,53 +1,53 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.data;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.common.PagedEntityListPanel;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-
-public class DataViewContainer<T extends IDataProviderEntity> implements Serializable {
- private static final long serialVersionUID = 1L;
- public WebMarkupContainer container;
- public SearchableDataView<T> view;
- public PagedEntityListPanel navigator;
- private List<OmOrderByBorder<T>> orderLinks = new ArrayList<>();
-
- public DataViewContainer(WebMarkupContainer container, SearchableDataView<T> view, PagedEntityListPanel navigator) {
- this.container = container;
- this.view = view;
- this.navigator = navigator;
- }
-
- public DataViewContainer<T> addLink(OmOrderByBorder<T> link) {
- orderLinks.add(link);
- return this;
- }
-
- public OmOrderByBorder<T>[] getLinks() {
- @SuppressWarnings("unchecked")
- OmOrderByBorder<T>[] a = new OmOrderByBorder[0];
- return orderLinks.toArray(a);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+
+public class DataViewContainer<T extends IDataProviderEntity> implements Serializable {
+ private static final long serialVersionUID = 1L;
+ public WebMarkupContainer container;
+ public SearchableDataView<T> view;
+ public PagedEntityListPanel navigator;
+ private List<OmOrderByBorder<T>> orderLinks = new ArrayList<>();
+
+ public DataViewContainer(WebMarkupContainer container, SearchableDataView<T> view, PagedEntityListPanel navigator) {
+ this.container = container;
+ this.view = view;
+ this.navigator = navigator;
+ }
+
+ public DataViewContainer<T> addLink(OmOrderByBorder<T> link) {
+ orderLinks.add(link);
+ return this;
+ }
+
+ public OmOrderByBorder<T>[] getLinks() {
+ @SuppressWarnings("unchecked")
+ OmOrderByBorder<T>[] a = new OmOrderByBorder[0];
+ return orderLinks.toArray(a);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/OmOrderByBorder.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/OmOrderByBorder.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/OmOrderByBorder.java
index f0e077c..7625924 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/OmOrderByBorder.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/OmOrderByBorder.java
@@ -1,45 +1,45 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.data;
-
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.ajax.markup.html.repeater.data.sort.AjaxFallbackOrderByBorder;
-
-public class OmOrderByBorder<T extends IDataProviderEntity> extends AjaxFallbackOrderByBorder<String> {
- private static final long serialVersionUID = 1L;
- private DataViewContainer<T> container;
-
- public OmOrderByBorder(final String id, final String property, DataViewContainer<T> container) {
- super(id, property, container.view.getDataProvider());
- this.container = container;
- setOutputMarkupId(true);
- }
-
- @Override
- protected void onSortChanged() {
- container.view.setCurrentPage(0);
- }
-
- @Override
- protected void onAjaxClick(AjaxRequestTarget target) {
- target.add(container.container, container.navigator);
- target.add(container.getLinks());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.data;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.markup.html.repeater.data.sort.AjaxFallbackOrderByBorder;
+
+public class OmOrderByBorder<T extends IDataProviderEntity> extends AjaxFallbackOrderByBorder<String> {
+ private static final long serialVersionUID = 1L;
+ private DataViewContainer<T> container;
+
+ public OmOrderByBorder(final String id, final String property, DataViewContainer<T> container) {
+ super(id, property, container.view.getDataProvider());
+ this.container = container;
+ setOutputMarkupId(true);
+ }
+
+ @Override
+ protected void onSortChanged() {
+ container.view.setCurrentPage(0);
+ }
+
+ @Override
+ protected void onAjaxClick(AjaxRequestTarget target) {
+ target.add(container.container, container.navigator);
+ target.add(container.getLinks());
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableDataProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableDataProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableDataProvider.java
index 15c160d..6c88d6b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableDataProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableDataProvider.java
@@ -1,92 +1,92 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.data;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import java.util.Iterator;
-
-import org.apache.openmeetings.db.dao.IDataProviderDao;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-
-/**
- * provides function to fill paging tables
- *
- * @author swagner
- *
- * @param <T>
- */
-public class SearchableDataProvider<T extends IDataProviderEntity> extends SortableDataProvider<T, String> {
- private static final long serialVersionUID = 1L;
- protected Class<? extends IDataProviderDao<T>> clazz;
- protected String search = null;
-
- public SearchableDataProvider(Class<? extends IDataProviderDao<T>> c) {
- this.clazz = c;
- }
-
- @Override
- public void detach() {
- // does nothing
- }
-
- protected IDataProviderDao<T> getDao() {
- return getBean(clazz);
- }
-
- protected String getSortStr() {
- String result = null;
- if (getSort() != null) {
- result = getSort().getProperty() + " " + (getSort().isAscending() ? "ASC" : "DESC");
- }
- return result;
- }
-
- @Override
- public Iterator<? extends T> iterator(long first, long count) {
- return (search == null && getSort() == null
- ? getDao().get((int)first, (int)count)
- : getDao().get(search, (int)first, (int)count, getSortStr())).iterator();
- }
-
- @Override
- public long size() {
- return search == null ? getDao().count() : getDao().count(search);
- }
-
- @Override
- public IModel<T> model(T object) {
- return new CompoundPropertyModel<>(object);
- }
-
- public void setSearch(String search) {
- if (search != null && !search.trim().isEmpty()) {
- this.search = search.trim();
- } else {
- this.search = null;
- }
- }
-
- public String getSearch() {
- return search;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.data;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.Iterator;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+
+/**
+ * provides function to fill paging tables
+ *
+ * @author swagner
+ *
+ * @param <T>
+ */
+public class SearchableDataProvider<T extends IDataProviderEntity> extends SortableDataProvider<T, String> {
+ private static final long serialVersionUID = 1L;
+ protected Class<? extends IDataProviderDao<T>> clazz;
+ protected String search = null;
+
+ public SearchableDataProvider(Class<? extends IDataProviderDao<T>> c) {
+ this.clazz = c;
+ }
+
+ @Override
+ public void detach() {
+ // does nothing
+ }
+
+ protected IDataProviderDao<T> getDao() {
+ return getBean(clazz);
+ }
+
+ protected String getSortStr() {
+ String result = null;
+ if (getSort() != null) {
+ result = getSort().getProperty() + " " + (getSort().isAscending() ? "ASC" : "DESC");
+ }
+ return result;
+ }
+
+ @Override
+ public Iterator<? extends T> iterator(long first, long count) {
+ return (search == null && getSort() == null
+ ? getDao().get((int)first, (int)count)
+ : getDao().get(search, (int)first, (int)count, getSortStr())).iterator();
+ }
+
+ @Override
+ public long size() {
+ return search == null ? getDao().count() : getDao().count(search);
+ }
+
+ @Override
+ public IModel<T> model(T object) {
+ return new CompoundPropertyModel<>(object);
+ }
+
+ public void setSearch(String search) {
+ if (search != null && !search.trim().isEmpty()) {
+ this.search = search.trim();
+ } else {
+ this.search = null;
+ }
+ }
+
+ public String getSearch() {
+ return search;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
index 727f4e7..ed02171 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
@@ -1,51 +1,51 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.pages;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import java.util.Date;
-
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.entity.user.User.Right;
-import org.apache.openmeetings.db.util.AuthLevelUtil;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-public class ActivatePage extends BaseNotInitedPage {
- private static final long serialVersionUID = 1L;
- public static final String ACTIVATION_PARAM = "u";
-
- public ActivatePage(PageParameters pp) {
- String userHash = pp.get(ACTIVATION_PARAM).toString();
- if (userHash != null) {
- User user = getBean(UserDao.class).getUserByActivationHash(userHash);
-
- if (user != null && !AuthLevelUtil.hasLoginLevel(user.getRights())) {
- // activate
- user.getRights().add(Right.Login);
- user.setUpdated(new Date());
-
- getBean(UserDao.class).update(user, null);
- }
- }
- setResponsePage(Application.get().getSignInPageClass());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.Date;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class ActivatePage extends BaseNotInitedPage {
+ private static final long serialVersionUID = 1L;
+ public static final String ACTIVATION_PARAM = "u";
+
+ public ActivatePage(PageParameters pp) {
+ String userHash = pp.get(ACTIVATION_PARAM).toString();
+ if (userHash != null) {
+ User user = getBean(UserDao.class).getUserByActivationHash(userHash);
+
+ if (user != null && !AuthLevelUtil.hasLoginLevel(user.getRights())) {
+ // activate
+ user.getRights().add(Right.Login);
+ user.setUpdated(new Date());
+
+ getBean(UserDao.class).update(user, null);
+ }
+ }
+ setResponsePage(Application.get().getSignInPageClass());
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.html
index 3171a21..a6896fa 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.html
@@ -1,32 +1,32 @@
-<!DOCTYPE html>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:extend>
- <!-- FIXME localized versions of this file need to be created -->
- <div class="message">
- <b>OpenMeetings - Loading ...</b><br />
- The server is not yet completely initialized. Please try again in a couple of seconds.<br/>
- If this message persists for several minutes contact your Sys-Administration.<br/>
- If that message stays forever you should check the logs located in
- <pre>openmeetings_install_dir/log</pre> folder, probably your database user/pwd/host is wrong!
- </div>
-</wicket:extend>
-</html>
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:extend>
+ <!-- FIXME localized versions of this file need to be created -->
+ <div class="message">
+ <b>OpenMeetings - Loading ...</b><br />
+ The server is not yet completely initialized. Please try again in a couple of seconds.<br/>
+ If this message persists for several minutes contact your Sys-Administration.<br/>
+ If that message stays forever you should check the logs located in
+ <pre>openmeetings_install_dir/log</pre> folder, probably your database user/pwd/host is wrong!
+ </div>
+</wicket:extend>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java
index b0e39a1..3cecb0a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java
@@ -1,40 +1,40 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.pages;
-
-import org.apache.openmeetings.util.InitializationContainer;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.RestartResponseException;
-
-public class NotInitedPage extends BaseNotInitedPage {
- private static final long serialVersionUID = 1L;
-
- public NotInitedPage() {
- if (InitializationContainer.initComplete) {
- continueToOriginalDestination();
- // Ups, no original destination. Go to the home page
- throw new RestartResponseException(Application.get().getHomePage());
- }
- }
-
- @Override
- protected String getGaCode() {
- return null;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import org.apache.openmeetings.util.InitializationContainer;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.RestartResponseException;
+
+public class NotInitedPage extends BaseNotInitedPage {
+ private static final long serialVersionUID = 1L;
+
+ public NotInitedPage() {
+ if (InitializationContainer.initComplete) {
+ continueToOriginalDestination();
+ // Ups, no original destination. Go to the home page
+ throw new RestartResponseException(Application.get().getHomePage());
+ }
+ }
+
+ @Override
+ protected String getGaCode() {
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.html
index 4f6d993..5e39f7b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.html
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:extend>
- <div wicket:id="resetPassword"></div>
- </wicket:extend>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:extend>
+ <div wicket:id="resetPassword"></div>
+ </wicket:extend>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
index 1f6dae0..45b93a5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
@@ -1,44 +1,44 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.pages;
-
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.pages.auth.ResetPasswordDialog;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-public class ResetPage extends BaseNotInitedPage {
- private static final long serialVersionUID = 1L;
- private final String RESET_PARAM = "hash";
-
- public ResetPage(PageParameters pp){
- String resetHash = pp.get(RESET_PARAM).toString();
- if (resetHash != null){
- Object user = Application.getBean(UserDao.class).getUserByHash(resetHash);
- if (user instanceof User){
- add(new ResetPasswordDialog("resetPassword", (User)user));
- } else {
- setResponsePage(Application.get().getSignInPageClass());
- }
- } else {
- setResponsePage(Application.get().getSignInPageClass());
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.pages.auth.ResetPasswordDialog;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class ResetPage extends BaseNotInitedPage {
+ private static final long serialVersionUID = 1L;
+ private final String RESET_PARAM = "hash";
+
+ public ResetPage(PageParameters pp){
+ String resetHash = pp.get(RESET_PARAM).toString();
+ if (resetHash != null){
+ Object user = Application.getBean(UserDao.class).getUserByHash(resetHash);
+ if (user instanceof User){
+ add(new ResetPasswordDialog("resetPassword", (User)user));
+ } else {
+ setResponsePage(Application.get().getSignInPageClass());
+ }
+ } else {
+ setResponsePage(Application.get().getSignInPageClass());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.html
index 1163346..a72f866 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.html
@@ -1,29 +1,29 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <table>
- <tr>
- <td wicket:id="message">[message]</td>
- </tr>
- </table>
- </wicket:panel>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <table>
+ <tr>
+ <td wicket:id="message">[message]</td>
+ </tr>
+ </table>
+ </wicket:panel>
</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
index b2f489f..f2dad62 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
@@ -1,58 +1,58 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.pages.auth;
-
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.basic.Label;
-
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-
-public class KickMessageDialog extends AbstractDialog<String> {
- private static final long serialVersionUID = 1L;
-
- public KickMessageDialog(String id) {
- super(id, "");
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- add(new Label("message", getString("606")));
- };
-
- @Override
- public void onConfigure(JQueryBehavior behavior) {
- super.onConfigure(behavior);
- behavior.setOption("autoOpen", true);
- behavior.setOption("closeOnEscape", false);
- behavior.setOption("classes", "{'ui-dialog-titlebar': 'ui-corner-all no-close'}");
- behavior.setOption("resizable", false);
- }
-
- @Override
- public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
- WebSession.setKickedByAdmin(false);
- Application.get().restartResponseAtSignInPage();
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.pages.auth;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.basic.Label;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class KickMessageDialog extends AbstractDialog<String> {
+ private static final long serialVersionUID = 1L;
+
+ public KickMessageDialog(String id) {
+ super(id, "");
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ add(new Label("message", getString("606")));
+ };
+
+ @Override
+ public void onConfigure(JQueryBehavior behavior) {
+ super.onConfigure(behavior);
+ behavior.setOption("autoOpen", true);
+ behavior.setOption("closeOnEscape", false);
+ behavior.setOption("classes", "{'ui-dialog-titlebar': 'ui-corner-all no-close'}");
+ behavior.setOption("resizable", false);
+ }
+
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+ WebSession.setKickedByAdmin(false);
+ Application.get().restartResponseAtSignInPage();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.html
index fd73713..476a5d2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.html
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <form wicket:id="form">
- <table>
- <tr>
- <td><label wicket:for="login"><wicket:message key="314" /></label></td>
- <td><input type="text" readonly wicket:id="login" /></td>
- </tr>
- <tr>
- <td><label><wicket:message key="328" /></label></td>
- <td><input type="password" wicket:id="password" /></td>
- </tr>
- <tr>
- <td><label><wicket:message key="329" /></label></td>
- <td><input type="password" wicket:id="confirmPassword" /></td>
- </tr>
- </table>
- <span wicket:id="feedback"></span>
- <input type="submit" wicket:id="submit" class="invisible-form-component"/>
- </form>
- <div wicket:id="confirmReset"></div>
-</wicket:panel>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <form wicket:id="form">
+ <table>
+ <tr>
+ <td><label wicket:for="login"><wicket:message key="314" /></label></td>
+ <td><input type="text" readonly wicket:id="login" /></td>
+ </tr>
+ <tr>
+ <td><label><wicket:message key="328" /></label></td>
+ <td><input type="password" wicket:id="password" /></td>
+ </tr>
+ <tr>
+ <td><label><wicket:message key="329" /></label></td>
+ <td><input type="password" wicket:id="confirmPassword" /></td>
+ </tr>
+ </table>
+ <span wicket:id="feedback"></span>
+ <input type="submit" wicket:id="submit" class="invisible-form-component"/>
+ </form>
+ <div wicket:id="confirmReset"></div>
+</wicket:panel>
</html>
\ No newline at end of file
[23/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
index c1788f7..64409b7 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
@@ -1,81 +1,81 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.util;
-
-import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
-
-import java.util.regex.Pattern;
-
-import org.apache.openmeetings.db.entity.user.User;
-
-public class FormatHelper {
- /**
- * taken from BidiUtils
- *
- * A regular expression for matching right-to-left language codes. See
- * {@link #isRtlLanguage} for the design.
- */
- private static final Pattern RtlLocalesRe = Pattern.compile("^(ar|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))"
- + "(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)");
-
- /**
- * Check if a BCP 47 / III language code indicates an RTL language, i.e.
- * either: - a language code explicitly specifying one of the right-to-left
- * scripts, e.g. "az-Arab", or
- * <p>
- * - a language code specifying one of the languages normally written in a
- * right-to-left script, e.g. "fa" (Farsi), except ones explicitly
- * specifying Latin or Cyrillic script (which are the usual LTR
- * alternatives).
- * <p>
- * The list of right-to-left scripts appears in the 100-199 range in
- * http://www.unicode.org/iso15924/iso15924-num.html, of which Arabic and
- * Hebrew are by far the most widely used. We also recognize Thaana, N'Ko,
- * and Tifinagh, which also have significant modern usage. The rest (Syriac,
- * Samaritan, Mandaic, etc.) seem to have extremely limited or no modern
- * usage and are not recognized. The languages usually written in a
- * right-to-left script are taken as those with Suppress-Script:
- * Hebr|Arab|Thaa|Nkoo|Tfng in
- * http://www.iana.org/assignments/language-subtag-registry, as well as
- * Sindhi (sd) and Uyghur (ug). The presence of other subtags of the
- * language code, e.g. regions like EG (Egypt), is ignored.
- */
- public static boolean isRtlLanguage(String languageString) {
- return languageString != null && RtlLocalesRe.matcher(languageString).find();
- }
-
- public static String formatUser(User u) {
- return formatUser(u, false);
- }
-
- // TODO check RIGHTS here (email might need to be hidden)
- public static String formatUser(User u, boolean isHTMLEscape) {
- String user = "";
- if (u != null) {
- String email = u.getAddress() == null ? "" : u.getAddress().getEmail();
- if (u.getFirstname() == null && u.getLastname() == null) {
- user = email;
- } else {
- user = String.format("\"%s %s\" <%s>", u.getFirstname(), u.getLastname(), email);
- }
- user = isHTMLEscape ? escapeHtml4(user) : user;
- }
- return user;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.util;
+
+import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
+
+import java.util.regex.Pattern;
+
+import org.apache.openmeetings.db.entity.user.User;
+
+public class FormatHelper {
+ /**
+ * taken from BidiUtils
+ *
+ * A regular expression for matching right-to-left language codes. See
+ * {@link #isRtlLanguage} for the design.
+ */
+ private static final Pattern RtlLocalesRe = Pattern.compile("^(ar|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))"
+ + "(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)");
+
+ /**
+ * Check if a BCP 47 / III language code indicates an RTL language, i.e.
+ * either: - a language code explicitly specifying one of the right-to-left
+ * scripts, e.g. "az-Arab", or
+ * <p>
+ * - a language code specifying one of the languages normally written in a
+ * right-to-left script, e.g. "fa" (Farsi), except ones explicitly
+ * specifying Latin or Cyrillic script (which are the usual LTR
+ * alternatives).
+ * <p>
+ * The list of right-to-left scripts appears in the 100-199 range in
+ * http://www.unicode.org/iso15924/iso15924-num.html, of which Arabic and
+ * Hebrew are by far the most widely used. We also recognize Thaana, N'Ko,
+ * and Tifinagh, which also have significant modern usage. The rest (Syriac,
+ * Samaritan, Mandaic, etc.) seem to have extremely limited or no modern
+ * usage and are not recognized. The languages usually written in a
+ * right-to-left script are taken as those with Suppress-Script:
+ * Hebr|Arab|Thaa|Nkoo|Tfng in
+ * http://www.iana.org/assignments/language-subtag-registry, as well as
+ * Sindhi (sd) and Uyghur (ug). The presence of other subtags of the
+ * language code, e.g. regions like EG (Egypt), is ignored.
+ */
+ public static boolean isRtlLanguage(String languageString) {
+ return languageString != null && RtlLocalesRe.matcher(languageString).find();
+ }
+
+ public static String formatUser(User u) {
+ return formatUser(u, false);
+ }
+
+ // TODO check RIGHTS here (email might need to be hidden)
+ public static String formatUser(User u, boolean isHTMLEscape) {
+ String user = "";
+ if (u != null) {
+ String email = u.getAddress() == null ? "" : u.getAddress().getEmail();
+ if (u.getFirstname() == null && u.getLastname() == null) {
+ user = email;
+ } else {
+ user = String.format("\"%s %s\" <%s>", u.getFirstname(), u.getLastname(), email);
+ }
+ user = isHTMLEscape ? escapeHtml4(user) : user;
+ }
+ return user;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/site/site.xml b/openmeetings-db/src/site/site.xml
index c26954e..0d9f35c 100644
--- a/openmeetings-db/src/site/site.xml
+++ b/openmeetings-db/src/site/site.xml
@@ -1,40 +1,40 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu ref="parent"/>
- <menu name="Project">
- <item name="About" href="/index.html" />
- <item name="Info" href="/project-info.html" />
- <item name="Summary" href="/project-summary.html" />
- <item name="License" href="/license.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Dependency Convergence" href="/dependency-convergence.html" />
- <item name="RAT Report" href="/rat-report.html" />
- <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <bottomNav maxSpan="12">
- <column>Parent Project</column>
- <column>Project</column>
- </bottomNav>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu ref="parent"/>
+ <menu name="Project">
+ <item name="About" href="/index.html" />
+ <item name="Info" href="/project-info.html" />
+ <item name="Summary" href="/project-summary.html" />
+ <item name="License" href="/license.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Dependency Convergence" href="/dependency-convergence.html" />
+ <item name="RAT Report" href="/rat-report.html" />
+ <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <bottomNav maxSpan="12">
+ <column>Parent Project</column>
+ <column>Project</column>
+ </bottomNav>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx b/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx
index 747c0ea..6b06435 100644
--- a/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx
@@ -1,67 +1,67 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="miniIcons" extends="view" stretches="both">
- <attribute name="showhandcursor" value="true" type="boolean" />
- <handler name="onmouseover">
- if (this.showhandcursor) {
- this.setAttribute("x",this.x-1);
- this.setAttribute("y",this.y-1);
- this.setAttribute("height",this.height+2);
- this.setAttribute("width",this.width+2);
- }
- parent.parent.onmouseover.sendEvent();
- </handler>
- <handler name="onmouseout">
- if (this.showhandcursor) {
- this.setAttribute("x",this.x+1);
- this.setAttribute("y",this.y+1);
- this.setAttribute("height",this.height-2);
- this.setAttribute("width",this.width-2);
- }
- parent.parent.onmouseout.sendEvent();
- </handler>
-</class>
-
-<class name="miniIconsImage" extends="omImage" stretches="both">
- <attribute name="showhandcursor" value="true" type="boolean" />
- <handler name="onmouseover">
- if (this.showhandcursor) {
- this.setAttribute("x",this.x-1);
- this.setAttribute("y",this.y-1);
- this.setAttribute("height",this.height+2);
- this.setAttribute("width",this.width+2);
- }
- parent.parent.onmouseover.sendEvent();
- </handler>
- <handler name="onmouseout">
- if (this.showhandcursor) {
- this.setAttribute("x",this.x+1);
- this.setAttribute("y",this.y+1);
- this.setAttribute("height",this.height-2);
- this.setAttribute("width",this.width-2);
- }
- parent.parent.onmouseout.sendEvent();
- </handler>
-</class>
-
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="miniIcons" extends="view" stretches="both">
+ <attribute name="showhandcursor" value="true" type="boolean" />
+ <handler name="onmouseover">
+ if (this.showhandcursor) {
+ this.setAttribute("x",this.x-1);
+ this.setAttribute("y",this.y-1);
+ this.setAttribute("height",this.height+2);
+ this.setAttribute("width",this.width+2);
+ }
+ parent.parent.onmouseover.sendEvent();
+ </handler>
+ <handler name="onmouseout">
+ if (this.showhandcursor) {
+ this.setAttribute("x",this.x+1);
+ this.setAttribute("y",this.y+1);
+ this.setAttribute("height",this.height-2);
+ this.setAttribute("width",this.width-2);
+ }
+ parent.parent.onmouseout.sendEvent();
+ </handler>
+</class>
+
+<class name="miniIconsImage" extends="omImage" stretches="both">
+ <attribute name="showhandcursor" value="true" type="boolean" />
+ <handler name="onmouseover">
+ if (this.showhandcursor) {
+ this.setAttribute("x",this.x-1);
+ this.setAttribute("y",this.y-1);
+ this.setAttribute("height",this.height+2);
+ this.setAttribute("width",this.width+2);
+ }
+ parent.parent.onmouseover.sendEvent();
+ </handler>
+ <handler name="onmouseout">
+ if (this.showhandcursor) {
+ this.setAttribute("x",this.x+1);
+ this.setAttribute("y",this.y+1);
+ this.setAttribute("height",this.height-2);
+ this.setAttribute("width",this.width-2);
+ }
+ parent.parent.onmouseout.sendEvent();
+ </handler>
+</class>
+
</library>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx b/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx
index 2e4a1a2..30e2e17 100644
--- a/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx
@@ -1,47 +1,47 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
- <class name="miniIconsNew" extends="view" >
- <attribute name="innerResource" value="" type="string" />
- <handler name="onmouseover">
- if (this.showhandcursor) {
- this.innnerView.setAttribute("x",this.innnerView.x-1);
- this.innnerView.setAttribute("y",this.innnerView.y-1);
- this.innnerView.setAttribute("height",this.innnerView.height+2);
- this.innnerView.setAttribute("width",this.innnerView.width+2);
- }
- </handler>
- <handler name="onmouseout">
- if (this.showhandcursor) {
- this.innnerView.setAttribute("x",this.innnerView.x+1);
- this.innnerView.setAttribute("y",this.innnerView.y+1);
- this.innnerView.setAttribute("height",this.innnerView.height-2);
- this.innnerView.setAttribute("width",this.innnerView.width-2);
- }
- </handler>
- <view name="innnerView" resource="$once{ parent.innerResource }" stretches="both"
- width="$once{ parent.width }" height="$once{ parent.height }">
-
- </view>
- </class>
-
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+ <class name="miniIconsNew" extends="view" >
+ <attribute name="innerResource" value="" type="string" />
+ <handler name="onmouseover">
+ if (this.showhandcursor) {
+ this.innnerView.setAttribute("x",this.innnerView.x-1);
+ this.innnerView.setAttribute("y",this.innnerView.y-1);
+ this.innnerView.setAttribute("height",this.innnerView.height+2);
+ this.innnerView.setAttribute("width",this.innnerView.width+2);
+ }
+ </handler>
+ <handler name="onmouseout">
+ if (this.showhandcursor) {
+ this.innnerView.setAttribute("x",this.innnerView.x+1);
+ this.innnerView.setAttribute("y",this.innnerView.y+1);
+ this.innnerView.setAttribute("height",this.innnerView.height-2);
+ this.innnerView.setAttribute("width",this.innnerView.width-2);
+ }
+ </handler>
+ <view name="innnerView" resource="$once{ parent.innerResource }" stretches="both"
+ width="$once{ parent.width }" height="$once{ parent.height }">
+
+ </view>
+ </class>
+
</library>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/omImage.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/omImage.lzx b/openmeetings-flash/src/main/swf/base/components/omImage.lzx
index 8694db1..f3ec381 100644
--- a/openmeetings-flash/src/main/swf/base/components/omImage.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/omImage.lzx
@@ -1,52 +1,52 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="omImage" extends="image">
- <handler name="onsrc" method="loadOmSrc" />
- <handler name="oninit" method="loadOmImage" />
-
- <method name="loadOmImage" args="ignore">
- <![CDATA[
- if (this.src != '' && this.src != null) {
- canvas.loadImgBySrc(this, this.src, completeCallback);
- }
- ]]>
- </method>
-
- <method name="completeCallback" args="event">
- //if($debug) Debug.write("[width, height] ", this.src, this.sprite.imgLoader.width, this.sprite.imgLoader.height, this.width, this.height);
- this.sprite.imgLoader.width = this.width;
- this.sprite.imgLoader.height = this.height;
- </method>
-
- <method name="loadOmSrc" args="src">
- <![CDATA[
- //if ($debug) Debug.write("omImage::loadOmSrc src ", src);
- if (src != null) {
- this.setSource(src);
- loadOmImage(null);
- }
- ]]>
- </method>
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="omImage" extends="image">
+ <handler name="onsrc" method="loadOmSrc" />
+ <handler name="oninit" method="loadOmImage" />
+
+ <method name="loadOmImage" args="ignore">
+ <![CDATA[
+ if (this.src != '' && this.src != null) {
+ canvas.loadImgBySrc(this, this.src, completeCallback);
+ }
+ ]]>
+ </method>
+
+ <method name="completeCallback" args="event">
+ //if($debug) Debug.write("[width, height] ", this.src, this.sprite.imgLoader.width, this.sprite.imgLoader.height, this.width, this.height);
+ this.sprite.imgLoader.width = this.width;
+ this.sprite.imgLoader.height = this.height;
+ </method>
+
+ <method name="loadOmSrc" args="src">
+ <![CDATA[
+ //if ($debug) Debug.write("omImage::loadOmSrc src ", src);
+ if (src != null) {
+ this.setSource(src);
+ loadOmImage(null);
+ }
+ ]]>
+ </method>
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx b/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx
index 7dfed47..44484cd 100644
--- a/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="omMiniIcon">
- <attribute name="imgUrl" value="" type="string" />
-
- <handler name="oninit">
- canvas.loadImgBySrc(this, imgUrl, completeCallback);
- </handler>
-
- <method name="completeCallback" args="event">
- //if ($debug) Debug.info("omMiniIcon::completeCallback: ", imgUrl, this.sprite.imgLoader.width, this.sprite.imgLoader.height, this.width, this.height);
- this.sprite.imgLoader.width = this.width;
- this.sprite.imgLoader.height = this.height;
- </method>
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="omMiniIcon">
+ <attribute name="imgUrl" value="" type="string" />
+
+ <handler name="oninit">
+ canvas.loadImgBySrc(this, imgUrl, completeCallback);
+ </handler>
+
+ <method name="completeCallback" args="event">
+ //if ($debug) Debug.info("omMiniIcon::completeCallback: ", imgUrl, this.sprite.imgLoader.width, this.sprite.imgLoader.height, this.width, this.height);
+ this.sprite.imgLoader.width = this.width;
+ this.sprite.imgLoader.height = this.height;
+ </method>
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx b/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx
index 9ee00e1..a0af972 100644
--- a/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx
@@ -1,44 +1,44 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
- <!-- APL Author sebawagner -->
- <resource name="omscrolltrack_y_rsc" src="resources/y_scrolltrack.swf" />
-
- <!-- APL Author sebawagner -->
- <resource name="omscrollbar_ythumbmiddle_rsc" src="resources/scrollthumb_y_mid.swf" />
- <!-- APL Author sebawagner -->
- <resource name="omscrollbar_ythumbtop_rsc" src="resources/scrollthumb_y_top.swf" />
- <!-- APL Author sebawagner -->
- <resource name="omscrollbar_ythumbbottom_rsc" src="resources/scrollthumb_y_bottom.swf" />
- <!-- APL Author sebawagner -->
- <resource name="omscrolltrack_x_rsc" src="resources/x_scrolltrack.swf" />
- <!-- APL Author sebawagner -->
- <resource name="omscrollbar_xthumbmiddle_rsc" src="resources/scrollthumb_x_mid.swf" />
- <!-- APL Author sebawagner -->
- <resource name="omscrollbar_xthumbleft_rsc" src="resources/scrollthumb_x_left.swf" />
- <!-- APL Author sebawagner -->
- <resource name="omscrollbar_xthumbright_rsc" src="resources/scrollthumb_x_right.swf" />
-
- <include href="om_vscrollbar.lzx"/>
- <include href="om_hscrollbar.lzx"/>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+ <!-- APL Author sebawagner -->
+ <resource name="omscrolltrack_y_rsc" src="resources/y_scrolltrack.swf" />
+
+ <!-- APL Author sebawagner -->
+ <resource name="omscrollbar_ythumbmiddle_rsc" src="resources/scrollthumb_y_mid.swf" />
+ <!-- APL Author sebawagner -->
+ <resource name="omscrollbar_ythumbtop_rsc" src="resources/scrollthumb_y_top.swf" />
+ <!-- APL Author sebawagner -->
+ <resource name="omscrollbar_ythumbbottom_rsc" src="resources/scrollthumb_y_bottom.swf" />
+ <!-- APL Author sebawagner -->
+ <resource name="omscrolltrack_x_rsc" src="resources/x_scrolltrack.swf" />
+ <!-- APL Author sebawagner -->
+ <resource name="omscrollbar_xthumbmiddle_rsc" src="resources/scrollthumb_x_mid.swf" />
+ <!-- APL Author sebawagner -->
+ <resource name="omscrollbar_xthumbleft_rsc" src="resources/scrollthumb_x_left.swf" />
+ <!-- APL Author sebawagner -->
+ <resource name="omscrollbar_xthumbright_rsc" src="resources/scrollthumb_x_right.swf" />
+
+ <include href="om_vscrollbar.lzx"/>
+ <include href="om_hscrollbar.lzx"/>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx b/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx
index bc08ffe..ed0b7f6 100644
--- a/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-
-
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+
+
</library>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx b/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx
index 5c71fb5..7ca59ab 100644
--- a/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx
+++ b/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx
@@ -1,385 +1,385 @@
-<library>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-
-<!---
- extends the Video-View with Streaming functions
- -->
-
-<class name="baseVideoStream" extends="baseVideoView">
-
- <switch>
- <when property="$as3">
- <passthrough>
- import flash.events.*;
- import flash.net.*;
- import flash.media.*
- </passthrough>
- </when>
- </switch>
-
- <attribute name="yDebug" value="-20" type="number" />
-
- <method name="getYDebug">
- this.yDebug += 20;
- return this.yDebug;
- </method>
-
- <!--- the NetStream Object
- @keywords final -->
- <attribute name="_ns" value="null" />
-
- <!--- This value does indicate if this stream play or broadcasts
- @keywords readonly -->
- <attribute name="mode" value="play" type="string" />
-
- <!--- This is the current buffer used, in Live Streaming this MUST be 0
- @keywords readonly -->
- <attribute name="bufferTime" value="0" type="number" />
-
- <!--- This is a reference to the current microphone, only set if broadcasting
- @keywords readonly -->
- <attribute name="micro" value="null" />
-
- <!--- This is a reference to the current camara, only set if broadcasting
- @keywords readonly -->
- <attribute name="camera" value="null" />
-
- <!--- Reference To the Sound Object
- @keywords final -->
- <attribute name="soundRef" value="null" />
- <!--- Reference To the Sound MovieClip
- @keywords final -->
- <attribute name="soundRefMC" value="null" />
-
- <!--- Default mic gain -->
- <attribute name="micGain" value="50" type="number"/>
-
- <attribute name="micMuted" value="false" />
-
- <event name="onMetaDataEvent" />
- <event name="onPlayStatusEvent" />
- <event name="onCuePointEvent" />
- <event name="onAsyncError" />
- <event name="onNetStatus" />
- <event name="onIoError" />
-
- <!-- save value for restart -->
- <attribute name="streamName" type="string"/>
- <attribute name="delay" />
- <!--- @keywords private -->
- <method name="createStream">
- var tStream = this._findnc();
- if (!tStream.connected) {
- if ($debug) Debug.warn("NetConnection is not connected");
- }
- this._ns = new NetStream(tStream);
- //see: http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/net/NetStream.html
- //according to the docs the construct to catch event has to be implemented like this.
- var t = this;
- var clientObject = new Object();
- clientObject.onMetaData = function(metadata:Object):void {
- t.onMetaData(metadata);
- };
- clientObject.onPlayStatus = function(metadata:Object):void {
- t.onPlayStatus(metadata);
- };
- clientObject.onCuePoint = function(metadata:Object):void {
- t.onCuePoint(metadata);
- };
- clientObject.ioError = function(error:Object):void {
- t.ioError(error);
- };
- clientObject.netStatus = function(status:Object):void {
- t.netStatus(status);
- };
- clientObject.asyncError = function(error:Object):void {
- t.asyncError(error);
- };
- this._ns.client = clientObject;
- //this is a workaround, attaching the event to the client object does not work
- this._ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus2);
- </method>
-
- <method name="onNetStatus2" args="evt">
- if($debug) Debug.write("netStream_onNetStatus: " , evt.info.code, evt.target);
- this.onNetStatus.sendEvent(evt.info);
- </method>
-
- <method name="asyncError" args="error">
- if($debug) Debug.write("simpleNetStream asyncError",error);
- this.onAsyncError.sendEvent(error);
- </method>
-
- <method name="netStatus" args="status">
- if($debug) Debug.write("simpleNetStream netStatus",status);
- this.onNetStatus.sendEvent(status);
- </method>
-
- <method name="ioError" args="error">
- if($debug) Debug.write("simpleNetStream ioError",error);
- this.onIoError.sendEvent(error);
- </method>
-
- <method name="onCuePoint" args="info"><![CDATA[
- if($debug) Debug.write("simpleNetStream onCuePoint",info);
- this.onCuePointEvent.sendEvent(info);
- ]]></method>
-
- <method name="onPlayStatus" args="info"><![CDATA[
- if($debug) Debug.write("simpleNetStream onPlayStatus",info);
- this.onPlayStatusEvent.sendEvent(info);
- ]]></method>
-
- <method name="onMetaData" args="info"><![CDATA[
- if($debug) Debug.write("simpleNetStream onMetaData",info);
- this.onMetaDataEvent.sendEvent(info);
- ]]></method>
-
- <!--- Find the Flash NetConnection object.
- @keywords private -->
- <method name="_findnc">
- if (canvas.currentNC == null) {
- if ($debug) Debug.warn("canvas.currentNC is NULL, maybe connection did fail?");
- }
- return canvas.currentNC;
- </method>
-
- <!---
- Plays a Video Stream, makes a new Instance of a NetStream, if previous NetStream
- is still open it will first close that, used to subscribe to a live-stream
- @param string streamName the streamname to play
- @param number delay The time it should seek, for Live-Streams this value should be -1
- -->
- <method name="playStream" args="_streamName, delay">
- <![CDATA[
- this.streamName = "" + _streamName;
- this.delay = delay;
- if (this._ns != null){
- this._stop();
- }
- this.mode = "play";
- this.createStream();
- //invokes Method in baseVideoView which shows the stream
- this.attachVideo(this._ns);
- //FIXME: Commented out, cause this leads to Buffer-Full/Buffer-Empty Events
- //after re-syncing the stream
- //this.setBuffer(0.1);
- if ($debug) Debug.write("Play Stream '" + streamName + "'");
- if (delay == 0) {
- this._ns.play(streamName);
- } else {
- this._ns.play(streamName,delay);
- }
- ]]>
- </method>
-
- <method name="justPlayStream" args="_streamName, delay">
- <![CDATA[
- this.streamName = "" + _streamName;
- this.delay=delay;
- if (this._ns!=null){
- if ($debug) Debug.write("STOP NS is NOT null ")
- this._stop();
- }
- this.mode = "play";
- this.createStream();
- //invokes Method in baseVideoView which shows the stream
- this.attachVideo(this._ns);
- //FIXME: Commented out, cause this leads to Buffer-Full/Buffer-Empty Events
- //after re-syncing the stream
-
- this.setBuffer(6);
-
- if ($debug) Debug.write("Just Play Stream "+streamName);
-
- this._ns.play(streamName,delay);
- ]]>
- </method>
-
- <method name="prepare" args="mode, streamName, camReference, micReference">
- <![CDATA[
- if (this._ns != null){
- this._stop();
- }
- this.mode = mode;
- this.createStream();
-
- if (camReference != null) {
- this.setAttribute('camera', camReference);
- this._ns.attachCamera(camReference);
- //invokes Method in baseVideoView which shows the cam
- this.attachCamera(camReference);
-
- var videoStreamSettings = null;
- if ($debug) Debug.write("codecType=" + canvas.codecType);
- if (canvas.codecType === "h264") {
- videoStreamSettings = new H264VideoStreamSettings();
- videoStreamSettings.setProfileLevel(H264Profile.BASELINE, H264Level.LEVEL_3_1);
- } else {
- videoStreamSettings = new VideoStreamSettings();
- }
- videoStreamSettings.setQuality(camReference.bandwidth, camReference.quality);
- videoStreamSettings.setKeyFrameInterval(camReference.keyFrameInterval);
- if ($debug) Debug.write("::keyFrameInterval " + camReference.keyFrameInterval);
- videoStreamSettings.setMode(camReference.width, camReference.height, camReference.fps);
- this._ns.videoStreamSettings = videoStreamSettings;
- }
- if (micReference != null) {
- this.setAttribute('micro', micReference);
- this._ns.attachAudio(micReference);
- //FIXME TODO muteMicro(this.micMuted);
- }
- this._ns.publish("" + streamName, (mode == "broadcast") ? "live" : mode);
- ]]>
- </method>
- <!---
- BroadCasts a Stream
- @param string streamName the streamname to broadcast
- @param camera camReference a reference to the Camera-Object to stream
- @param micropone micReference a reference to the Micropohne Object to stream
- -->
- <method name="broadcast" args="streamName,camReference,micReference">
- prepare("broadcast", streamName, camReference, micReference);
- </method>
-
- <method name="record" args="streamName,camReference,micReference">
- prepare("record", streamName, camReference, micReference);
- </method>
-
- <!---
- Stops playing or broadcasting a Stream and clears the Video-Object
- -->
- <method name="_stop">
- if ($debug) Debug.write("STOP: ",this.mode,this._ns);
- //Stop NetStream
- if (this._ns == null) return;
- this.camera = null;
- this.micro = null;
- this._ns.attachCamera(null);
- this._ns.attachAudio(null);
- if (this.mode == "play") {
- this.soundRefMC = null;
- this.soundRef = null;
- this._ns.pause();
- this._ns.close();
- //remove NetStream from Video-Object
- this.clear();
- this._ns = null;
- } else if (this.mode == "broadcast") {
- this._ns.publish(false);
- //remove NetStream from Video-Object
- this.clear();
- this._ns.close();
- this._ns = null;
- } else if (this.mode == "record") {
- this._ns.publish(false);
- //remove NetStream from Video-Object
- this.clear();
- this._ns.close();
- this._ns = null;
- } else {
- this.clear();
- this._ns.close();
- this._ns = null;
- if ($debug) Debug.warn("Not known Mode: ",this.mode,this);
- }
- </method>
-
- <method name="restart">
- this._stop();
- this.playStream(this.streamName ,this.delay);
- </method>
-
- <method name="setBuffer" args="time">
- if ($debug) Debug.warn("setBuffer has no 1:1 equivalent in AS3 ");
- return;
- if(this._ns!=null){
- this.bufferTime = time;
- this._ns.setBufferTime(time);
- } else {
- if ($debug) Debug.warn("setBuffer but no NetStream initialized",this);
- }
- </method>
-
- <!--- sets the Volume of the VideoStream
- @param number volume Number between 0 and 100
- -->
- <method name="setSoundVolume" args="volume">
- //if ($debug) Debug.write(":: setSoundVolume ", parent.parent.publicSID);
- //this.soundRef.setVolume(volume);
- if (this._ns!=null){
- this._ns.soundTransform = new SoundTransform(volume/100.0);
- }
- </method>
-
- <method name="muteMicro" args="mute">
- if ($debug) Debug.write(":: muteMicro ", mute, parent.parent.publicSID);
- this.micMuted = mute;
- if(this.micro != null) {
- if(mute) {
- if (this.micro.gain == 0) {
- return;
- }
- if ($debug) Debug.write("Make Gain mute again from ",this.micro.gain);
- this.setAttribute('micGain', this.micro.gain);
- this.micro.gain = 0;
- } else {
- if ($debug) Debug.write("Make Gain loud again to ",this.micGain);
- this.micro.gain = this.micGain;
- }
- }
- </method>
-
- <!---
- pause or resumes the NetStream
- @args pauseStatus true pause, false resume
- -->
- <method name="pause" args="pauseStatus">
- if ($debug) Debug.write("do Pause",pauseStatus);
- if (this._ns==null){
- if ($debug) Debug.warn("No NetStream");
- return;
- }
- if (pauseStatus) {
- this._ns.pause();
- } else {
- this._ns.resume();
- }
- </method>
-
- <!---
- Seek the stream to a flvTime
- this might only work if there are keyframes in the FLV, normally it should
- try to use the nearest keyframe available for the specified time.
- -->
- <method name="seekStream" args="flvTime">
- if ($debug) Debug.write("do seek",flvTime);
- if (this._ns==null){
- if ($debug) Debug.warn("No NetStream");
- return;
- }
- this._ns.seek(flvTime);
- </method>
-
-</class>
-
-
-</library>
+<library>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+
+<!---
+ extends the Video-View with Streaming functions
+ -->
+
+<class name="baseVideoStream" extends="baseVideoView">
+
+ <switch>
+ <when property="$as3">
+ <passthrough>
+ import flash.events.*;
+ import flash.net.*;
+ import flash.media.*
+ </passthrough>
+ </when>
+ </switch>
+
+ <attribute name="yDebug" value="-20" type="number" />
+
+ <method name="getYDebug">
+ this.yDebug += 20;
+ return this.yDebug;
+ </method>
+
+ <!--- the NetStream Object
+ @keywords final -->
+ <attribute name="_ns" value="null" />
+
+ <!--- This value does indicate if this stream play or broadcasts
+ @keywords readonly -->
+ <attribute name="mode" value="play" type="string" />
+
+ <!--- This is the current buffer used, in Live Streaming this MUST be 0
+ @keywords readonly -->
+ <attribute name="bufferTime" value="0" type="number" />
+
+ <!--- This is a reference to the current microphone, only set if broadcasting
+ @keywords readonly -->
+ <attribute name="micro" value="null" />
+
+ <!--- This is a reference to the current camara, only set if broadcasting
+ @keywords readonly -->
+ <attribute name="camera" value="null" />
+
+ <!--- Reference To the Sound Object
+ @keywords final -->
+ <attribute name="soundRef" value="null" />
+ <!--- Reference To the Sound MovieClip
+ @keywords final -->
+ <attribute name="soundRefMC" value="null" />
+
+ <!--- Default mic gain -->
+ <attribute name="micGain" value="50" type="number"/>
+
+ <attribute name="micMuted" value="false" />
+
+ <event name="onMetaDataEvent" />
+ <event name="onPlayStatusEvent" />
+ <event name="onCuePointEvent" />
+ <event name="onAsyncError" />
+ <event name="onNetStatus" />
+ <event name="onIoError" />
+
+ <!-- save value for restart -->
+ <attribute name="streamName" type="string"/>
+ <attribute name="delay" />
+ <!--- @keywords private -->
+ <method name="createStream">
+ var tStream = this._findnc();
+ if (!tStream.connected) {
+ if ($debug) Debug.warn("NetConnection is not connected");
+ }
+ this._ns = new NetStream(tStream);
+ //see: http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/net/NetStream.html
+ //according to the docs the construct to catch event has to be implemented like this.
+ var t = this;
+ var clientObject = new Object();
+ clientObject.onMetaData = function(metadata:Object):void {
+ t.onMetaData(metadata);
+ };
+ clientObject.onPlayStatus = function(metadata:Object):void {
+ t.onPlayStatus(metadata);
+ };
+ clientObject.onCuePoint = function(metadata:Object):void {
+ t.onCuePoint(metadata);
+ };
+ clientObject.ioError = function(error:Object):void {
+ t.ioError(error);
+ };
+ clientObject.netStatus = function(status:Object):void {
+ t.netStatus(status);
+ };
+ clientObject.asyncError = function(error:Object):void {
+ t.asyncError(error);
+ };
+ this._ns.client = clientObject;
+ //this is a workaround, attaching the event to the client object does not work
+ this._ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus2);
+ </method>
+
+ <method name="onNetStatus2" args="evt">
+ if($debug) Debug.write("netStream_onNetStatus: " , evt.info.code, evt.target);
+ this.onNetStatus.sendEvent(evt.info);
+ </method>
+
+ <method name="asyncError" args="error">
+ if($debug) Debug.write("simpleNetStream asyncError",error);
+ this.onAsyncError.sendEvent(error);
+ </method>
+
+ <method name="netStatus" args="status">
+ if($debug) Debug.write("simpleNetStream netStatus",status);
+ this.onNetStatus.sendEvent(status);
+ </method>
+
+ <method name="ioError" args="error">
+ if($debug) Debug.write("simpleNetStream ioError",error);
+ this.onIoError.sendEvent(error);
+ </method>
+
+ <method name="onCuePoint" args="info"><![CDATA[
+ if($debug) Debug.write("simpleNetStream onCuePoint",info);
+ this.onCuePointEvent.sendEvent(info);
+ ]]></method>
+
+ <method name="onPlayStatus" args="info"><![CDATA[
+ if($debug) Debug.write("simpleNetStream onPlayStatus",info);
+ this.onPlayStatusEvent.sendEvent(info);
+ ]]></method>
+
+ <method name="onMetaData" args="info"><![CDATA[
+ if($debug) Debug.write("simpleNetStream onMetaData",info);
+ this.onMetaDataEvent.sendEvent(info);
+ ]]></method>
+
+ <!--- Find the Flash NetConnection object.
+ @keywords private -->
+ <method name="_findnc">
+ if (canvas.currentNC == null) {
+ if ($debug) Debug.warn("canvas.currentNC is NULL, maybe connection did fail?");
+ }
+ return canvas.currentNC;
+ </method>
+
+ <!---
+ Plays a Video Stream, makes a new Instance of a NetStream, if previous NetStream
+ is still open it will first close that, used to subscribe to a live-stream
+ @param string streamName the streamname to play
+ @param number delay The time it should seek, for Live-Streams this value should be -1
+ -->
+ <method name="playStream" args="_streamName, delay">
+ <![CDATA[
+ this.streamName = "" + _streamName;
+ this.delay = delay;
+ if (this._ns != null){
+ this._stop();
+ }
+ this.mode = "play";
+ this.createStream();
+ //invokes Method in baseVideoView which shows the stream
+ this.attachVideo(this._ns);
+ //FIXME: Commented out, cause this leads to Buffer-Full/Buffer-Empty Events
+ //after re-syncing the stream
+ //this.setBuffer(0.1);
+ if ($debug) Debug.write("Play Stream '" + streamName + "'");
+ if (delay == 0) {
+ this._ns.play(streamName);
+ } else {
+ this._ns.play(streamName,delay);
+ }
+ ]]>
+ </method>
+
+ <method name="justPlayStream" args="_streamName, delay">
+ <![CDATA[
+ this.streamName = "" + _streamName;
+ this.delay=delay;
+ if (this._ns!=null){
+ if ($debug) Debug.write("STOP NS is NOT null ")
+ this._stop();
+ }
+ this.mode = "play";
+ this.createStream();
+ //invokes Method in baseVideoView which shows the stream
+ this.attachVideo(this._ns);
+ //FIXME: Commented out, cause this leads to Buffer-Full/Buffer-Empty Events
+ //after re-syncing the stream
+
+ this.setBuffer(6);
+
+ if ($debug) Debug.write("Just Play Stream "+streamName);
+
+ this._ns.play(streamName,delay);
+ ]]>
+ </method>
+
+ <method name="prepare" args="mode, streamName, camReference, micReference">
+ <![CDATA[
+ if (this._ns != null){
+ this._stop();
+ }
+ this.mode = mode;
+ this.createStream();
+
+ if (camReference != null) {
+ this.setAttribute('camera', camReference);
+ this._ns.attachCamera(camReference);
+ //invokes Method in baseVideoView which shows the cam
+ this.attachCamera(camReference);
+
+ var videoStreamSettings = null;
+ if ($debug) Debug.write("codecType=" + canvas.codecType);
+ if (canvas.codecType === "h264") {
+ videoStreamSettings = new H264VideoStreamSettings();
+ videoStreamSettings.setProfileLevel(H264Profile.BASELINE, H264Level.LEVEL_3_1);
+ } else {
+ videoStreamSettings = new VideoStreamSettings();
+ }
+ videoStreamSettings.setQuality(camReference.bandwidth, camReference.quality);
+ videoStreamSettings.setKeyFrameInterval(camReference.keyFrameInterval);
+ if ($debug) Debug.write("::keyFrameInterval " + camReference.keyFrameInterval);
+ videoStreamSettings.setMode(camReference.width, camReference.height, camReference.fps);
+ this._ns.videoStreamSettings = videoStreamSettings;
+ }
+ if (micReference != null) {
+ this.setAttribute('micro', micReference);
+ this._ns.attachAudio(micReference);
+ //FIXME TODO muteMicro(this.micMuted);
+ }
+ this._ns.publish("" + streamName, (mode == "broadcast") ? "live" : mode);
+ ]]>
+ </method>
+ <!---
+ BroadCasts a Stream
+ @param string streamName the streamname to broadcast
+ @param camera camReference a reference to the Camera-Object to stream
+ @param micropone micReference a reference to the Micropohne Object to stream
+ -->
+ <method name="broadcast" args="streamName,camReference,micReference">
+ prepare("broadcast", streamName, camReference, micReference);
+ </method>
+
+ <method name="record" args="streamName,camReference,micReference">
+ prepare("record", streamName, camReference, micReference);
+ </method>
+
+ <!---
+ Stops playing or broadcasting a Stream and clears the Video-Object
+ -->
+ <method name="_stop">
+ if ($debug) Debug.write("STOP: ",this.mode,this._ns);
+ //Stop NetStream
+ if (this._ns == null) return;
+ this.camera = null;
+ this.micro = null;
+ this._ns.attachCamera(null);
+ this._ns.attachAudio(null);
+ if (this.mode == "play") {
+ this.soundRefMC = null;
+ this.soundRef = null;
+ this._ns.pause();
+ this._ns.close();
+ //remove NetStream from Video-Object
+ this.clear();
+ this._ns = null;
+ } else if (this.mode == "broadcast") {
+ this._ns.publish(false);
+ //remove NetStream from Video-Object
+ this.clear();
+ this._ns.close();
+ this._ns = null;
+ } else if (this.mode == "record") {
+ this._ns.publish(false);
+ //remove NetStream from Video-Object
+ this.clear();
+ this._ns.close();
+ this._ns = null;
+ } else {
+ this.clear();
+ this._ns.close();
+ this._ns = null;
+ if ($debug) Debug.warn("Not known Mode: ",this.mode,this);
+ }
+ </method>
+
+ <method name="restart">
+ this._stop();
+ this.playStream(this.streamName ,this.delay);
+ </method>
+
+ <method name="setBuffer" args="time">
+ if ($debug) Debug.warn("setBuffer has no 1:1 equivalent in AS3 ");
+ return;
+ if(this._ns!=null){
+ this.bufferTime = time;
+ this._ns.setBufferTime(time);
+ } else {
+ if ($debug) Debug.warn("setBuffer but no NetStream initialized",this);
+ }
+ </method>
+
+ <!--- sets the Volume of the VideoStream
+ @param number volume Number between 0 and 100
+ -->
+ <method name="setSoundVolume" args="volume">
+ //if ($debug) Debug.write(":: setSoundVolume ", parent.parent.publicSID);
+ //this.soundRef.setVolume(volume);
+ if (this._ns!=null){
+ this._ns.soundTransform = new SoundTransform(volume/100.0);
+ }
+ </method>
+
+ <method name="muteMicro" args="mute">
+ if ($debug) Debug.write(":: muteMicro ", mute, parent.parent.publicSID);
+ this.micMuted = mute;
+ if(this.micro != null) {
+ if(mute) {
+ if (this.micro.gain == 0) {
+ return;
+ }
+ if ($debug) Debug.write("Make Gain mute again from ",this.micro.gain);
+ this.setAttribute('micGain', this.micro.gain);
+ this.micro.gain = 0;
+ } else {
+ if ($debug) Debug.write("Make Gain loud again to ",this.micGain);
+ this.micro.gain = this.micGain;
+ }
+ }
+ </method>
+
+ <!---
+ pause or resumes the NetStream
+ @args pauseStatus true pause, false resume
+ -->
+ <method name="pause" args="pauseStatus">
+ if ($debug) Debug.write("do Pause",pauseStatus);
+ if (this._ns==null){
+ if ($debug) Debug.warn("No NetStream");
+ return;
+ }
+ if (pauseStatus) {
+ this._ns.pause();
+ } else {
+ this._ns.resume();
+ }
+ </method>
+
+ <!---
+ Seek the stream to a flvTime
+ this might only work if there are keyframes in the FLV, normally it should
+ try to use the nearest keyframe available for the specified time.
+ -->
+ <method name="seekStream" args="flvTime">
+ if ($debug) Debug.write("do seek",flvTime);
+ if (this._ns==null){
+ if ($debug) Debug.warn("No NetStream");
+ return;
+ }
+ this._ns.seek(flvTime);
+ </method>
+
+</class>
+
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx b/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx
index da1717b..57073ff 100644
--- a/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx
+++ b/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx
@@ -1,172 +1,172 @@
-<library>
- <!-- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with this
- work for additional information regarding copyright ownership. The ASF licenses
- this file to you 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. -->
-
- <!--- extends the baseVideoStream with functions to catch Device Events
- this Class uses Events from the Base Class baseVideoStream onmicro and oncamera,
- which are thrown, once a device was set -->
-
- <class name="baseVideoStreamDevice" extends="baseVideoStream">
- <switch>
- <when property="$as3">
- <passthrough>
- import flash.events.StatusEvent;
- import flash.events.ActivityEvent;
- import flash.external.ExternalInterface;
- </passthrough>
- </when>
- </switch>
-
- <!--- Shows if there is Activity on the Microphone -->
- <attribute name="micactive" value="false" type="boolean" />
-
- <!--- Level delegate, used to track level changes.
- @keywords private -->
- <attribute name="_leveldel"
- value="$once{new LzDelegate(this, '_updateLevel')}" />
-
- <!--- Audio level, 0-100, the amount of sound detected by this microphone.
- Reset to 0 when there is no audio (no activity or not allowed).
- @keywords readonly -->
- <attribute name="level" type="number" value="0" />
-
- <!--- Shows if there is Activity on the Camera -->
- <attribute name="camactive" value="false" type="boolean" />
-
- <!--- Message to send to Clients -->
- <attribute name="objMessage" value="null" />
- <!--- indicates if the message should be send, you can change the notification
- level by changing the loudnessAcitviation in the public/config.xml -->
- <attribute name="isgreater" value="false" type="boolean" />
-
- <attribute name="doSendNotification" value="true" type="boolean" />
-
- <!--- If true the component will send an event via LocalConnection when
- sound is louder or less 5% -->
- <attribute name="sendNotificationViaLocalConnection" value="true"
- type="boolean" />
-
- <event name="sendCameraStatus" />
-
- <event name="sendMicroStatus" />
-
- <handler name="oncamera" args="c">
- //if ($debug) Debug.write("Cam: ",c);
- c.addEventListener(ActivityEvent.ACTIVITY, onActivity);
- c.addEventListener(StatusEvent.STATUS, onStatus);
- </handler>
-
- <method name="onStatus" args="stats">
- if ($debug) Debug.write("CamStatus: ",stats);
- this.sendCameraStatus.sendEvent(stats.code);
- </method>
-
- <method name="onActivity" args="event">
- this.setAttribute("camactive", event.activating);
- </method>
-
- <handler name="onmicro" args="m">
- //if ($debug) Debug.write("onmicro: ",m);
- var t = this;
- //send mic active to true to start the onActivity callback Idle job
- this.setAttribute("micactive", true);
- m.addEventListener(ActivityEvent.ACTIVITY, onMicActivity);
- m.addEventListener(StatusEvent.STATUS, onMicStatus);
- </handler>
-
- <method name="onMicStatus" args="stats">
- if ($debug) Debug.write("onMicStatus 1: ",stats);
- this.sendMicroStatus.sendEvent(stats.code);
- </method>
-
- <method name="onMicActivity" args="event">
- if ($debug) Debug.write("onMicActivity: ",event);
- </method>
-
- <!--- Handler for the Flash Microphone onActivity callback.
- @keywords private -->
- <handler name="onmicactive">
- <![CDATA[
- if (this.onlevel) {
- if (this.micactive) {
- this._leveldel.register(lz.Idle, "onidle");
- } else {
- this._leveldel.unregisterAll();
- this.setAttribute("level", 0);
- }
- }
- ]]>
- </handler>
-
- <!--- Handler for updating the microphone activity level attribute.
- @keywords private -->
- <method name="_updateLevel" args="arg">
- <![CDATA[
- if (this.micro == null) {
- return;
- }
- var level = this.micro.activityLevel;
- if (level < 0) {
- level = 0;
- }
-
- if (level != this.level) {
- this.setAttribute("level", level);
- }
- ]]>
- </method>
-
- <!-- these methods send a Notification to all Connected users of a Room
- about the onActivity-Change -->
- <handler name="onlevel" args="level">
- <![CDATA[
- //if ($debug) Debug.write("onlevel ",this.level,level);
-
- if (!this.doSendNotification) {
- return;
- }
-
- //greater 5 means the green dot starts to blink if the loudness is greater then 5%
- //it makes no sense to set this to zero as there will be 1000 of events send
- //per minute to change the status just of this icon, swagner 12.02.2012
- var tVal = (level > 8);
-
- if (this.isgreater != tVal) {
- //if ($debug) Debug.write("Level sendNotification ",this.isgreater,tVal,level);
- this.isgreater = tVal;
- this.sendNotification();
- }
- ]]>
- </handler>
-
- <method name="sendNotification">
- //if ($debug) Debug.write("Level sendNotification ",this.isgreater);
- if (!this.sendNotificationViaLocalConnection) {
- return;
- }
- if (parent.parent._loudness != null) {
- parent.parent._loudness.setSpeaking(this.isgreater);
- }
- this.objMessage = new Array ();
- this.objMessage[0] = 'audioActivity';
- this.objMessage[1] = this.isgreater;
- this.objMessage[2] = parent.parent.publicSID;
- ExternalInterface.call("audioActivity", parent.parent.publicSID, this.isgreater);
- //if ($debug) Debug.write("Level sendNotification ",this.objMessage);
- this.sendMessage.doCall();
- </method>
-
- <netRemoteCallHib name="sendMessage" funcname="sendMessage"
- remotecontext="$once{ canvas.thishib }" showLoading="false">
- <netparam><method name="getValue"> return parent.parent.objMessage; </method></netparam>
- </netRemoteCallHib>
- </class>
-</library>
+<library>
+ <!-- Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with this
+ work for additional information regarding copyright ownership. The ASF licenses
+ this file to you 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. -->
+
+ <!--- extends the baseVideoStream with functions to catch Device Events
+ this Class uses Events from the Base Class baseVideoStream onmicro and oncamera,
+ which are thrown, once a device was set -->
+
+ <class name="baseVideoStreamDevice" extends="baseVideoStream">
+ <switch>
+ <when property="$as3">
+ <passthrough>
+ import flash.events.StatusEvent;
+ import flash.events.ActivityEvent;
+ import flash.external.ExternalInterface;
+ </passthrough>
+ </when>
+ </switch>
+
+ <!--- Shows if there is Activity on the Microphone -->
+ <attribute name="micactive" value="false" type="boolean" />
+
+ <!--- Level delegate, used to track level changes.
+ @keywords private -->
+ <attribute name="_leveldel"
+ value="$once{new LzDelegate(this, '_updateLevel')}" />
+
+ <!--- Audio level, 0-100, the amount of sound detected by this microphone.
+ Reset to 0 when there is no audio (no activity or not allowed).
+ @keywords readonly -->
+ <attribute name="level" type="number" value="0" />
+
+ <!--- Shows if there is Activity on the Camera -->
+ <attribute name="camactive" value="false" type="boolean" />
+
+ <!--- Message to send to Clients -->
+ <attribute name="objMessage" value="null" />
+ <!--- indicates if the message should be send, you can change the notification
+ level by changing the loudnessAcitviation in the public/config.xml -->
+ <attribute name="isgreater" value="false" type="boolean" />
+
+ <attribute name="doSendNotification" value="true" type="boolean" />
+
+ <!--- If true the component will send an event via LocalConnection when
+ sound is louder or less 5% -->
+ <attribute name="sendNotificationViaLocalConnection" value="true"
+ type="boolean" />
+
+ <event name="sendCameraStatus" />
+
+ <event name="sendMicroStatus" />
+
+ <handler name="oncamera" args="c">
+ //if ($debug) Debug.write("Cam: ",c);
+ c.addEventListener(ActivityEvent.ACTIVITY, onActivity);
+ c.addEventListener(StatusEvent.STATUS, onStatus);
+ </handler>
+
+ <method name="onStatus" args="stats">
+ if ($debug) Debug.write("CamStatus: ",stats);
+ this.sendCameraStatus.sendEvent(stats.code);
+ </method>
+
+ <method name="onActivity" args="event">
+ this.setAttribute("camactive", event.activating);
+ </method>
+
+ <handler name="onmicro" args="m">
+ //if ($debug) Debug.write("onmicro: ",m);
+ var t = this;
+ //send mic active to true to start the onActivity callback Idle job
+ this.setAttribute("micactive", true);
+ m.addEventListener(ActivityEvent.ACTIVITY, onMicActivity);
+ m.addEventListener(StatusEvent.STATUS, onMicStatus);
+ </handler>
+
+ <method name="onMicStatus" args="stats">
+ if ($debug) Debug.write("onMicStatus 1: ",stats);
+ this.sendMicroStatus.sendEvent(stats.code);
+ </method>
+
+ <method name="onMicActivity" args="event">
+ if ($debug) Debug.write("onMicActivity: ",event);
+ </method>
+
+ <!--- Handler for the Flash Microphone onActivity callback.
+ @keywords private -->
+ <handler name="onmicactive">
+ <![CDATA[
+ if (this.onlevel) {
+ if (this.micactive) {
+ this._leveldel.register(lz.Idle, "onidle");
+ } else {
+ this._leveldel.unregisterAll();
+ this.setAttribute("level", 0);
+ }
+ }
+ ]]>
+ </handler>
+
+ <!--- Handler for updating the microphone activity level attribute.
+ @keywords private -->
+ <method name="_updateLevel" args="arg">
+ <![CDATA[
+ if (this.micro == null) {
+ return;
+ }
+ var level = this.micro.activityLevel;
+ if (level < 0) {
+ level = 0;
+ }
+
+ if (level != this.level) {
+ this.setAttribute("level", level);
+ }
+ ]]>
+ </method>
+
+ <!-- these methods send a Notification to all Connected users of a Room
+ about the onActivity-Change -->
+ <handler name="onlevel" args="level">
+ <![CDATA[
+ //if ($debug) Debug.write("onlevel ",this.level,level);
+
+ if (!this.doSendNotification) {
+ return;
+ }
+
+ //greater 5 means the green dot starts to blink if the loudness is greater then 5%
+ //it makes no sense to set this to zero as there will be 1000 of events send
+ //per minute to change the status just of this icon, swagner 12.02.2012
+ var tVal = (level > 8);
+
+ if (this.isgreater != tVal) {
+ //if ($debug) Debug.write("Level sendNotification ",this.isgreater,tVal,level);
+ this.isgreater = tVal;
+ this.sendNotification();
+ }
+ ]]>
+ </handler>
+
+ <method name="sendNotification">
+ //if ($debug) Debug.write("Level sendNotification ",this.isgreater);
+ if (!this.sendNotificationViaLocalConnection) {
+ return;
+ }
+ if (parent.parent._loudness != null) {
+ parent.parent._loudness.setSpeaking(this.isgreater);
+ }
+ this.objMessage = new Array ();
+ this.objMessage[0] = 'audioActivity';
+ this.objMessage[1] = this.isgreater;
+ this.objMessage[2] = parent.parent.publicSID;
+ ExternalInterface.call("audioActivity", parent.parent.publicSID, this.isgreater);
+ //if ($debug) Debug.write("Level sendNotification ",this.objMessage);
+ this.sendMessage.doCall();
+ </method>
+
+ <netRemoteCallHib name="sendMessage" funcname="sendMessage"
+ remotecontext="$once{ canvas.thishib }" showLoading="false">
+ <netparam><method name="getValue"> return parent.parent.objMessage; </method></netparam>
+ </netRemoteCallHib>
+ </class>
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx b/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx
index 4d92d37..aa42c1a 100644
--- a/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx
+++ b/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx
@@ -1,104 +1,104 @@
-<library>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-
-
-<!---
- This class provides the basic functions for the video-output
-
- @START_CODE
- <baseVideoView x="20" y="20" width="320" height="240" bgcolor="black" />
- @END_CODE
- -->
-
-<class name="baseVideoView" width="${parent.width}" height="${parent.height}">
- <passthrough when="$as3">
- import flash.media.*;
- import flash.net.NetConnection;
- import flash.net.NetStream;
- </passthrough>
-
- <attribute name="_sound" value="null"/>
- <attribute name="__LZvideo" value="null"/>
-
- <method name="init"><![CDATA[
- super.init();
- var mc = new Video(this.width, this.height);
- this.sprite.addChild(mc);
- this.__LZvideo = mc;
- this.applySizeToVid();
- ]]></method>
-
- <method name="applySizeToVid">
- var vid = this._getflashvideo();
- if(vid != null) {
- vid.width = this.width;
- vid.height = this.height;
- } else {
- if ($debug) Debug.warn("applySizeToVid IS NULL ",this.width,this.height);
- }
- </method>
-
- <handler name="onwidth" args="w">
- this.applySizeToVid();
- </handler>
-
- <handler name="onheight" args="h">
- //if ($debug) Debug.info("onheight ",this.width,this.height);
- this.applySizeToVid();
- </handler>
-
- <method name="_getflashvideo">
- <![CDATA[
- if (__LZvideo == null) {
- init();
- }
- //if ($debug) Debug.write("_getflashvideo()");
- return this.__LZvideo;
- ]]>
- </method>
-
- <method name="attachCamera" args="camera">
- var vid = this._getflashvideo();
- vid.attachCamera(camera);
- //if ($debug) Debug.write("Attaching video :: ", this, vid, camera);
- </method>
-
- <!--- shows the Video (NetStream) in the View -->
- <method name="attachVideo" args="video">
- var vid = this._getflashvideo();
- vid.attachNetStream(video);
- </method>
-
- <method name="clear">
- if ($debug) Debug.write("Select unattach :3");
- if (this.__LZvideo != null) {
- this.__LZvideo.attachCamera(null);
- this.__LZvideo.attachNetStream(null);
- this.__LZvideo.clear();
- this.sprite.removeChild(this.__LZvideo);
- this.__LZvideo = null;
- }
- if ($debug) Debug.write("Select unattach : 4");
- </method>
-</class>
-
-
-</library>
+<library>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+
+
+<!---
+ This class provides the basic functions for the video-output
+
+ @START_CODE
+ <baseVideoView x="20" y="20" width="320" height="240" bgcolor="black" />
+ @END_CODE
+ -->
+
+<class name="baseVideoView" width="${parent.width}" height="${parent.height}">
+ <passthrough when="$as3">
+ import flash.media.*;
+ import flash.net.NetConnection;
+ import flash.net.NetStream;
+ </passthrough>
+
+ <attribute name="_sound" value="null"/>
+ <attribute name="__LZvideo" value="null"/>
+
+ <method name="init"><![CDATA[
+ super.init();
+ var mc = new Video(this.width, this.height);
+ this.sprite.addChild(mc);
+ this.__LZvideo = mc;
+ this.applySizeToVid();
+ ]]></method>
+
+ <method name="applySizeToVid">
+ var vid = this._getflashvideo();
+ if(vid != null) {
+ vid.width = this.width;
+ vid.height = this.height;
+ } else {
+ if ($debug) Debug.warn("applySizeToVid IS NULL ",this.width,this.height);
+ }
+ </method>
+
+ <handler name="onwidth" args="w">
+ this.applySizeToVid();
+ </handler>
+
+ <handler name="onheight" args="h">
+ //if ($debug) Debug.info("onheight ",this.width,this.height);
+ this.applySizeToVid();
+ </handler>
+
+ <method name="_getflashvideo">
+ <![CDATA[
+ if (__LZvideo == null) {
+ init();
+ }
+ //if ($debug) Debug.write("_getflashvideo()");
+ return this.__LZvideo;
+ ]]>
+ </method>
+
+ <method name="attachCamera" args="camera">
+ var vid = this._getflashvideo();
+ vid.attachCamera(camera);
+ //if ($debug) Debug.write("Attaching video :: ", this, vid, camera);
+ </method>
+
+ <!--- shows the Video (NetStream) in the View -->
+ <method name="attachVideo" args="video">
+ var vid = this._getflashvideo();
+ vid.attachNetStream(video);
+ </method>
+
+ <method name="clear">
+ if ($debug) Debug.write("Select unattach :3");
+ if (this.__LZvideo != null) {
+ this.__LZvideo.attachCamera(null);
+ this.__LZvideo.attachNetStream(null);
+ this.__LZvideo.clear();
+ this.sprite.removeChild(this.__LZvideo);
+ this.__LZvideo = null;
+ }
+ if ($debug) Debug.write("Select unattach : 4");
+ </method>
+</class>
+
+
+</library>
[04/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidget.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidget.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidget.java
index 4dbebe3..e9c1073 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidget.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidget.java
@@ -1,49 +1,49 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard.admin;
-
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.AbstractWidget;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.WidgetLocation;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class AdminWidget extends AbstractWidget {
- private static final long serialVersionUID = 1L;
- public static final String WIDGET_ID_ADMIN = "AdminWidget";
-
- public AdminWidget() {
- super();
- location = new WidgetLocation(0, 2);
- init();
- }
-
- @Override
- public void init() {
- super.init();
- title = Application.getString("dashboard.widget.admin.title");
- id = WIDGET_ID_ADMIN;
- }
-
- @Override
- public WidgetView createView(String viewId) {
- return new AdminWidgetView(viewId, new Model<Widget>(this));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard.admin;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.AbstractWidget;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.WidgetLocation;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class AdminWidget extends AbstractWidget {
+ private static final long serialVersionUID = 1L;
+ public static final String WIDGET_ID_ADMIN = "AdminWidget";
+
+ public AdminWidget() {
+ super();
+ location = new WidgetLocation(0, 2);
+ init();
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ title = Application.getString("dashboard.widget.admin.title");
+ id = WIDGET_ID_ADMIN;
+ }
+
+ @Override
+ public WidgetView createView(String viewId) {
+ return new AdminWidgetView(viewId, new Model<Widget>(this));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetDescriptor.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetDescriptor.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetDescriptor.java
index 3d418de..f57583e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetDescriptor.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetDescriptor.java
@@ -1,51 +1,51 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard.admin;
-
-import org.apache.openmeetings.web.app.Application;
-import org.wicketstuff.dashboard.WidgetDescriptor;
-
-public class AdminWidgetDescriptor implements WidgetDescriptor {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getName() {
- return Application.getString("dashboard.widget.admin.title");
- }
-
- @Override
- public String getProvider() {
- return "Apache Openmeetings";
- }
-
- @Override
- public String getDescription() {
- return Application.getString("dashboard.widget.admin.desc");
- }
-
- @Override
- public String getWidgetClassName() {
- return AdminWidget.class.getName();
- }
-
- @Override
- public String getTypeName() {
- return "om.widget.admin";
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard.admin;
+
+import org.apache.openmeetings.web.app.Application;
+import org.wicketstuff.dashboard.WidgetDescriptor;
+
+public class AdminWidgetDescriptor implements WidgetDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getName() {
+ return Application.getString("dashboard.widget.admin.title");
+ }
+
+ @Override
+ public String getProvider() {
+ return "Apache Openmeetings";
+ }
+
+ @Override
+ public String getDescription() {
+ return Application.getString("dashboard.widget.admin.desc");
+ }
+
+ @Override
+ public String getWidgetClassName() {
+ return AdminWidget.class.getName();
+ }
+
+ @Override
+ public String getTypeName() {
+ return "om.widget.admin";
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.html
index feb8a3d..1912617 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.html
@@ -1,29 +1,29 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <h3><wicket:message key="dashboard.widget.admin.title"/></h3>
- <form wicket:id="form">
- <button wicket:id="show-cleanup-dialog"><wicket:message key="dashboard.widget.admin.cleanup.show"/></button>
- <div wicket:id="cleanup-dialog"></div>
- </form>
-</wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <h3><wicket:message key="dashboard.widget.admin.title"/></h3>
+ <form wicket:id="form">
+ <button wicket:id="show-cleanup-dialog"><wicket:message key="dashboard.widget.admin.cleanup.show"/></button>
+ <div wicket:id="cleanup-dialog"></div>
+ </form>
+</wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.java
index 2efeeac..8d95d20 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminWidgetView.java
@@ -1,54 +1,54 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard.admin;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-import com.googlecode.wicket.jquery.ui.form.button.IndicatingAjaxButton;
-
-@AuthorizeInstantiation("Admin")
-public class AdminWidgetView extends WidgetView {
- private static final long serialVersionUID = 1L;
- private final AdminCleanupInfoDialog cleanupDialog;
- final Form<Void> form = new Form<>("form");
-
- public AdminWidgetView(String id, Model<Widget> model) {
- super(id, model);
- add(form);
- form.add(cleanupDialog = new AdminCleanupInfoDialog("cleanup-dialog"));
- form.add(new IndicatingAjaxButton("show-cleanup-dialog") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected boolean isDisabledOnClick() {
- return true;
- }
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- cleanupDialog.show(target);
- }
- });
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard.admin;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+import com.googlecode.wicket.jquery.ui.form.button.IndicatingAjaxButton;
+
+@AuthorizeInstantiation("Admin")
+public class AdminWidgetView extends WidgetView {
+ private static final long serialVersionUID = 1L;
+ private final AdminCleanupInfoDialog cleanupDialog;
+ final Form<Void> form = new Form<>("form");
+
+ public AdminWidgetView(String id, Model<Widget> model) {
+ super(id, model);
+ add(form);
+ form.add(cleanupDialog = new AdminCleanupInfoDialog("cleanup-dialog"));
+ form.add(new IndicatingAjaxButton("show-cleanup-dialog") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected boolean isDisabledOnClick() {
+ return true;
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ cleanupDialog.show(target);
+ }
+ });
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
index c376953..7df1978 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
@@ -1,87 +1,87 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <div class="user info panel">
- <table>
- <tr>
- <td><div wicket:id="img"></div></td>
- <td>
- <table>
- <tr>
- <td><wicket:message key="1164"/></td><td><span wicket:id="firstname"></span> <span wicket:id="lastname"></span></td>
- </tr>
- <tr>
- <td><wicket:message key="1165"/></td><td><span wicket:id="timeZoneId"></span></td>
- </tr>
- <tr>
- <td><wicket:message key="1296"/></td><td><span wicket:id="regdate"></span></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <div>
- <fieldset class="ui-widget-content">
- <legend class="ui-widget-header"><wicket:message key="1166"/></legend>
- <table>
- <tr>
- <td><wicket:message key="1162"/></td>
- <td><textarea wicket:id="userOffers"></textarea></td>
- </tr>
- <tr>
- <td><wicket:message key="1163"/></td>
- <td><textarea wicket:id="userSearchs"></textarea></td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div>
- <fieldset class="ui-widget-content">
- <legend class="ui-widget-header"><wicket:message key="1167"/></legend>
- <table wicket:id="address">
- <tr>
- <td><wicket:message key="607" /></td>
- <td><span wicket:id="address.phone"></span></td>
- </tr>
- <tr>
- <td><wicket:message key="139" /></td>
- <td><span wicket:id="address.street"></span> <span wicket:id="address.additionalname"></span></td>
- </tr>
- <tr>
- <td><wicket:message key="140" /></td>
- <td><span wicket:id="address.zip"></span> <span wicket:id="address.town"></span></td>
- </tr>
- <tr>
- <td><wicket:message key="141" /></td>
- <td><span wicket:id="country"></span></td>
- </tr>
- <tr>
- <td><wicket:message key="142" /></td>
- <td><span wicket:id="address.comment"></span></td>
- </tr>
- </table>
- <div wicket:id="addressDenied"></div>
- </fieldset>
- </div>
- </div>
-</wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div class="user info panel">
+ <table>
+ <tr>
+ <td><div wicket:id="img"></div></td>
+ <td>
+ <table>
+ <tr>
+ <td><wicket:message key="1164"/></td><td><span wicket:id="firstname"></span> <span wicket:id="lastname"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:message key="1165"/></td><td><span wicket:id="timeZoneId"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:message key="1296"/></td><td><span wicket:id="regdate"></span></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ <div>
+ <fieldset class="ui-widget-content">
+ <legend class="ui-widget-header"><wicket:message key="1166"/></legend>
+ <table>
+ <tr>
+ <td><wicket:message key="1162"/></td>
+ <td><textarea wicket:id="userOffers"></textarea></td>
+ </tr>
+ <tr>
+ <td><wicket:message key="1163"/></td>
+ <td><textarea wicket:id="userSearchs"></textarea></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div>
+ <fieldset class="ui-widget-content">
+ <legend class="ui-widget-header"><wicket:message key="1167"/></legend>
+ <table wicket:id="address">
+ <tr>
+ <td><wicket:message key="607" /></td>
+ <td><span wicket:id="address.phone"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:message key="139" /></td>
+ <td><span wicket:id="address.street"></span> <span wicket:id="address.additionalname"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:message key="140" /></td>
+ <td><span wicket:id="address.zip"></span> <span wicket:id="address.town"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:message key="141" /></td>
+ <td><span wicket:id="country"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:message key="142" /></td>
+ <td><span wicket:id="address.comment"></span></td>
+ </tr>
+ </table>
+ <div wicket:id="addressDenied"></div>
+ </fieldset>
+ </div>
+ </div>
+</wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
index 63dd237..56713fb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
@@ -1,73 +1,73 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.profile;
-
-import static org.apache.openmeetings.db.util.LocaleHelper.getCountryName;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import org.apache.openmeetings.db.dao.user.UserContactDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.ProfileImagePanel;
-import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.model.CompoundPropertyModel;
-
-public class UserProfilePanel extends UserPanel {
- private static final long serialVersionUID = 1L;
- private final WebMarkupContainer address = new WebMarkupContainer("address");
- private final Label addressDenied = new Label("addressDenied", "");
-
- public UserProfilePanel(String id, long userId) {
- this(id, new CompoundPropertyModel<>(getBean(UserDao.class).get(userId)));
- }
-
- public UserProfilePanel(String id, CompoundPropertyModel<User> model) {
- super(id, model);
-
- add(new ProfileImagePanel("img", model.getObject().getId()));
- add(new Label("firstname"));
- add(new Label("lastname"));
- add(new Label("timeZoneId"));
- add(new Label("regdate"));
- add(new TextArea<String>("userOffers").setEnabled(false));
- add(new TextArea<String>("userSearchs").setEnabled(false));
- if (getUserId().equals(model.getObject().getId()) || model.getObject().isShowContactData()
- || (model.getObject().isShowContactDataToContacts() && getBean(UserContactDao.class).isContact(model.getObject().getId(), getUserId())))
- {
- addressDenied.setVisible(false);
- address.add(new Label("address.phone"));
- address.add(new Label("address.street"));
- address.add(new Label("address.additionalname"));
- address.add(new Label("address.zip"));
- address.add(new Label("address.town"));
- address.add(new Label("country", getCountryName(model.getObject().getAddress().getCountry(), getLocale())));
- address.add(new Label("address.comment"));
- } else {
- address.setVisible(false);
- addressDenied.setDefaultModelObject(Application.getString(model.getObject().isShowContactDataToContacts() ? 1269 : 1268));
- }
- add(address.setDefaultModel(model));
- add(addressDenied);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.db.util.LocaleHelper.getCountryName;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.db.dao.user.UserContactDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ProfileImagePanel;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.model.CompoundPropertyModel;
+
+public class UserProfilePanel extends UserPanel {
+ private static final long serialVersionUID = 1L;
+ private final WebMarkupContainer address = new WebMarkupContainer("address");
+ private final Label addressDenied = new Label("addressDenied", "");
+
+ public UserProfilePanel(String id, long userId) {
+ this(id, new CompoundPropertyModel<>(getBean(UserDao.class).get(userId)));
+ }
+
+ public UserProfilePanel(String id, CompoundPropertyModel<User> model) {
+ super(id, model);
+
+ add(new ProfileImagePanel("img", model.getObject().getId()));
+ add(new Label("firstname"));
+ add(new Label("lastname"));
+ add(new Label("timeZoneId"));
+ add(new Label("regdate"));
+ add(new TextArea<String>("userOffers").setEnabled(false));
+ add(new TextArea<String>("userSearchs").setEnabled(false));
+ if (getUserId().equals(model.getObject().getId()) || model.getObject().isShowContactData()
+ || (model.getObject().isShowContactDataToContacts() && getBean(UserContactDao.class).isContact(model.getObject().getId(), getUserId())))
+ {
+ addressDenied.setVisible(false);
+ address.add(new Label("address.phone"));
+ address.add(new Label("address.street"));
+ address.add(new Label("address.additionalname"));
+ address.add(new Label("address.zip"));
+ address.add(new Label("address.town"));
+ address.add(new Label("country", getCountryName(model.getObject().getAddress().getCountry(), getLocale())));
+ address.add(new Label("address.comment"));
+ } else {
+ address.setVisible(false);
+ addressDenied.setDefaultModelObject(Application.getString(model.getObject().isShowContactDataToContacts() ? 1269 : 1268));
+ }
+ add(address.setDefaultModel(model));
+ add(addressDenied);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
index dc1cc3c..33b62b6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
@@ -1,69 +1,69 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <!-- FIXME move styles into CSS -->
- <table style="width: 100%; height: 100%;">
- <tr>
- <td valign="top" style="width: 200px;">
- <form wicket:id="form">
- <div><wicket:message key="1179"/></div>
- <input type="text" wicket:id="text"/><br/>
- <div><wicket:message key="1177"/></div>
- <input type="text" wicket:id="offer"/><br/>
- <div><wicket:message key="1178"/></div>
- <input type="text" wicket:id="search"/><br/>
- <br/>
- <button wicket:id="submit" type="button"><wicket:message key="1176"/></button>
- </form>
- </td>
- <td valign="top">
- <div wicket:id="container" style="height: 100%; min-height: 400px;">
- <div><strong><wicket:message key="1184"/></strong> <span wicket:id="navigator"></span></div>
- <table id="searchUsersTable" style="width: 100%;">
- <thead>
- <tr>
- <th><wicket:message key="1180"/></th>
- <th><wicket:message key="1181"/></th>
- <th><wicket:message key="1182"/></th>
- <th><wicket:message key="1183"/></th>
- <th><wicket:message key="1185"/></th>
- </tr>
- </thead>
- <tbody>
- <tr wicket:id="users">
- <td><span class="om-icon" wicket:id="status"></span><span wicket:id="name"></span></td>
- <td wicket:id="tz"></td>
- <td wicket:id="offer"></td>
- <td wicket:id="search"></td>
- <td style="white-space: nowrap;"><div wicket:id="add" class="add om-icon clickable" wicket:message="title:1186"
- ></div><div wicket:id="message" class="new-email om-icon clickable" wicket:message="title:1253"
- ></div><div wicket:id="view" class="user om-icon clickable" wicket:message="title:1236"
- ></div><div wicket:id="invite" class="invite om-icon clickable" wicket:message="title:1131"></div></td>
- </tr>
- </tbody>
- </table>
- </div>
- </td>
- </tr>
- </table>
-</wicket:panel>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <!-- FIXME move styles into CSS -->
+ <table style="width: 100%; height: 100%;">
+ <tr>
+ <td valign="top" style="width: 200px;">
+ <form wicket:id="form">
+ <div><wicket:message key="1179"/></div>
+ <input type="text" wicket:id="text"/><br/>
+ <div><wicket:message key="1177"/></div>
+ <input type="text" wicket:id="offer"/><br/>
+ <div><wicket:message key="1178"/></div>
+ <input type="text" wicket:id="search"/><br/>
+ <br/>
+ <button wicket:id="submit" type="button"><wicket:message key="1176"/></button>
+ </form>
+ </td>
+ <td valign="top">
+ <div wicket:id="container" style="height: 100%; min-height: 400px;">
+ <div><strong><wicket:message key="1184"/></strong> <span wicket:id="navigator"></span></div>
+ <table id="searchUsersTable" style="width: 100%;">
+ <thead>
+ <tr>
+ <th><wicket:message key="1180"/></th>
+ <th><wicket:message key="1181"/></th>
+ <th><wicket:message key="1182"/></th>
+ <th><wicket:message key="1183"/></th>
+ <th><wicket:message key="1185"/></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr wicket:id="users">
+ <td><span class="om-icon" wicket:id="status"></span><span wicket:id="name"></span></td>
+ <td wicket:id="tz"></td>
+ <td wicket:id="offer"></td>
+ <td wicket:id="search"></td>
+ <td style="white-space: nowrap;"><div wicket:id="add" class="add om-icon clickable" wicket:message="title:1186"
+ ></div><div wicket:id="message" class="new-email om-icon clickable" wicket:message="title:1253"
+ ></div><div wicket:id="view" class="user om-icon clickable" wicket:message="title:1236"
+ ></div><div wicket:id="invite" class="invite om-icon clickable" wicket:message="title:1131"></div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </table>
+</wicket:panel>
</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
index 02be695..eb536de 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
@@ -1,154 +1,154 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.profile;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.Application.isUserOnline;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.user.UserContactDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.util.TimezoneUtil;
-import org.apache.openmeetings.web.common.PagingNavigatorPanel;
-import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.markup.repeater.data.DataView;
-import org.apache.wicket.markup.repeater.data.IDataProvider;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-
-import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
-import com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTableBehavior;
-
-public class UserSearchPanel extends UserPanel {
- private static final long serialVersionUID = 1L;
- private final static List<Integer> itemsPerPage = Arrays.asList(10, 25, 50, 75, 100, 200, 500, 1000, 2500, 5000);
- private String text;
- private String search;
- private String offer;
- private String orderBy = "u.firstname";
- private boolean asc = true;
- private boolean searched = false;
- private final WebMarkupContainer container = new WebMarkupContainer("container");
- private final FixedHeaderTableBehavior fixedHeader = new FixedHeaderTableBehavior("#searchUsersTable", new Options("height", 400));
-
- private void refresh(IPartialPageRequestHandler handler) {
- handler.add(container.add(fixedHeader));
- }
-
- public UserSearchPanel(String id) {
- super(id);
-
- add(new Form<Void>("form") {
- private static final long serialVersionUID = 1L;
- {
- add(new TextField<>("text", new PropertyModel<String>(UserSearchPanel.this, "text")));
- add(new TextField<>("offer", new PropertyModel<String>(UserSearchPanel.this, "offer")));
- add(new TextField<>("search", new PropertyModel<String>(UserSearchPanel.this, "search")));
- add(new AjaxButton("submit") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- searched = true;
- refresh(target);
- }
- });
- }
- });
- IDataProvider<User> dp = new IDataProvider<User>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void detach() {
- }
-
- @Override
- public Iterator<? extends User> iterator(long first, long count) {
- return searched ? getBean(UserDao.class).searchUserProfile(getUserId(), text, offer, search, orderBy, (int)first, (int)count, asc).iterator()
- : new ArrayList<User>().iterator();
- }
-
- @Override
- public long size() {
- return searched ? getBean(UserDao.class).searchCountUserProfile(getUserId(), text, offer, search) : 0;
- }
-
- @Override
- public IModel<User> model(User object) {
- return new CompoundPropertyModel<>(object);
- }
-
- };
- final DataView<User> dw = new DataView<User>("users", dp) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(Item<User> item) {
- final UserContactDao contactsDao = getBean(UserContactDao.class);
- User u = item.getModelObject();
- final long userId = u.getId();
- item.add(new WebMarkupContainer("status").add(AttributeModifier.append("class", isUserOnline(userId) ? "online" : "offline")));
- item.add(new Label("name", getName(u)));
- item.add(new Label("tz", getBean(TimezoneUtil.class).getTimeZone(u).getID()));
- item.add(new Label("offer", u.getUserOffers()));
- item.add(new Label("search", u.getUserSearchs()));
- item.add(new WebMarkupContainer("view").add(AttributeModifier.append("onclick", String.format("showUserInfo(%s);", userId))));
- item.add(new WebMarkupContainer("add").setVisible(userId != getUserId() && !contactsDao.isContact(userId, getUserId()))
- .add(AttributeModifier.append("onclick", String.format("addContact(%s);", userId))));
- item.add(new WebMarkupContainer("message").setVisible(userId != getUserId()).add(AttributeModifier.append("onclick", String.format("privateMessage(%s);", userId))));
- item.add(new WebMarkupContainer("invite").setVisible(userId != getUserId()).add(AttributeModifier.append("onclick", String.format("inviteUser(%s);", userId))));
- //item.add(new TooltipBehavior(new Options("content", "TODO:: Picture will be displayed"))); //FIXME
- }
- };
-
- add(container.add(dw, new PagingNavigatorPanel("navigator", dw, itemsPerPage, 100) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- refresh(target);
- }
- }).setOutputMarkupId(true));
- }
-
- private static String getName(User u) {
- return "" + u.getFirstname() + " " + u.getLastname() + " [" + u.getLogin() + "]"; //FIXME salutation
- }
-
- @Override
- public void onNewMessageClose(IPartialPageRequestHandler handler) {
- refresh(handler);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.isUserOnline;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.UserContactDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.web.common.PagingNavigatorPanel;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.markup.repeater.data.DataView;
+import org.apache.wicket.markup.repeater.data.IDataProvider;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
+import com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTableBehavior;
+
+public class UserSearchPanel extends UserPanel {
+ private static final long serialVersionUID = 1L;
+ private final static List<Integer> itemsPerPage = Arrays.asList(10, 25, 50, 75, 100, 200, 500, 1000, 2500, 5000);
+ private String text;
+ private String search;
+ private String offer;
+ private String orderBy = "u.firstname";
+ private boolean asc = true;
+ private boolean searched = false;
+ private final WebMarkupContainer container = new WebMarkupContainer("container");
+ private final FixedHeaderTableBehavior fixedHeader = new FixedHeaderTableBehavior("#searchUsersTable", new Options("height", 400));
+
+ private void refresh(IPartialPageRequestHandler handler) {
+ handler.add(container.add(fixedHeader));
+ }
+
+ public UserSearchPanel(String id) {
+ super(id);
+
+ add(new Form<Void>("form") {
+ private static final long serialVersionUID = 1L;
+ {
+ add(new TextField<>("text", new PropertyModel<String>(UserSearchPanel.this, "text")));
+ add(new TextField<>("offer", new PropertyModel<String>(UserSearchPanel.this, "offer")));
+ add(new TextField<>("search", new PropertyModel<String>(UserSearchPanel.this, "search")));
+ add(new AjaxButton("submit") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ searched = true;
+ refresh(target);
+ }
+ });
+ }
+ });
+ IDataProvider<User> dp = new IDataProvider<User>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void detach() {
+ }
+
+ @Override
+ public Iterator<? extends User> iterator(long first, long count) {
+ return searched ? getBean(UserDao.class).searchUserProfile(getUserId(), text, offer, search, orderBy, (int)first, (int)count, asc).iterator()
+ : new ArrayList<User>().iterator();
+ }
+
+ @Override
+ public long size() {
+ return searched ? getBean(UserDao.class).searchCountUserProfile(getUserId(), text, offer, search) : 0;
+ }
+
+ @Override
+ public IModel<User> model(User object) {
+ return new CompoundPropertyModel<>(object);
+ }
+
+ };
+ final DataView<User> dw = new DataView<User>("users", dp) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(Item<User> item) {
+ final UserContactDao contactsDao = getBean(UserContactDao.class);
+ User u = item.getModelObject();
+ final long userId = u.getId();
+ item.add(new WebMarkupContainer("status").add(AttributeModifier.append("class", isUserOnline(userId) ? "online" : "offline")));
+ item.add(new Label("name", getName(u)));
+ item.add(new Label("tz", getBean(TimezoneUtil.class).getTimeZone(u).getID()));
+ item.add(new Label("offer", u.getUserOffers()));
+ item.add(new Label("search", u.getUserSearchs()));
+ item.add(new WebMarkupContainer("view").add(AttributeModifier.append("onclick", String.format("showUserInfo(%s);", userId))));
+ item.add(new WebMarkupContainer("add").setVisible(userId != getUserId() && !contactsDao.isContact(userId, getUserId()))
+ .add(AttributeModifier.append("onclick", String.format("addContact(%s);", userId))));
+ item.add(new WebMarkupContainer("message").setVisible(userId != getUserId()).add(AttributeModifier.append("onclick", String.format("privateMessage(%s);", userId))));
+ item.add(new WebMarkupContainer("invite").setVisible(userId != getUserId()).add(AttributeModifier.append("onclick", String.format("inviteUser(%s);", userId))));
+ //item.add(new TooltipBehavior(new Options("content", "TODO:: Picture will be displayed"))); //FIXME
+ }
+ };
+
+ add(container.add(dw, new PagingNavigatorPanel("navigator", dw, itemsPerPage, 100) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ refresh(target);
+ }
+ }).setOutputMarkupId(true));
+ }
+
+ private static String getName(User u) {
+ return "" + u.getFirstname() + " " + u.getLastname() + " [" + u.getLogin() + "]"; //FIXME salutation
+ }
+
+ @Override
+ public void onNewMessageClose(IPartialPageRequestHandler handler) {
+ refresh(handler);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html
index acb81c9..4a57ffe 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html
@@ -1,62 +1,62 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <table>
- <tr>
- <td style="vertical-align: top">
- <div wicket:id="list"></div>
- </td>
- <td style="vertical-align: top">
- <!-- Users in this Room -->
- <fieldset class="ui-widget-content" wicket:id="details">
- <div class="formelement" style="font-style: italic;">
- <label><wicket:message key="404" /></label>
- </div>
- <div class="formelement">
- <label style="font-weight: bold;"><wicket:message key="406" /></label>
- <span wicket:id="roomName"></span> #<span wicket:id="roomId"></span>
- </div>
- <div class="formelement">
- <label style="font-weight: bold;"><wicket:message key="270" /></label>
- <span wicket:id="roomComment"></span>
- </div>
- <div class="formelement">
- <label><wicket:message key="407" /></label>
- </div>
- <div class="tableWrapper" id="adminTable">
- <table class="adminListTable">
- <tbody wicket:id="clientsContainer">
- <tr wicket:id="clients">
- <td style="width: 50px;"><img wicket:id="clientImage" style="min-width: 50px; height:50px" /></td>
- <td style="width: 350px; height:50px">
- <div style="width: 350px; height:50px"><span wicket:id="clientLogin"></span> <wicket:message key="408"/> <span wicket:id="from"></span></div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </fieldset>
- </td>
- </tr>
- </table>
-</wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <table>
+ <tr>
+ <td style="vertical-align: top">
+ <div wicket:id="list"></div>
+ </td>
+ <td style="vertical-align: top">
+ <!-- Users in this Room -->
+ <fieldset class="ui-widget-content" wicket:id="details">
+ <div class="formelement" style="font-style: italic;">
+ <label><wicket:message key="404" /></label>
+ </div>
+ <div class="formelement">
+ <label style="font-weight: bold;"><wicket:message key="406" /></label>
+ <span wicket:id="roomName"></span> #<span wicket:id="roomId"></span>
+ </div>
+ <div class="formelement">
+ <label style="font-weight: bold;"><wicket:message key="270" /></label>
+ <span wicket:id="roomComment"></span>
+ </div>
+ <div class="formelement">
+ <label><wicket:message key="407" /></label>
+ </div>
+ <div class="tableWrapper" id="adminTable">
+ <table class="adminListTable">
+ <tbody wicket:id="clientsContainer">
+ <tr wicket:id="clients">
+ <td style="width: 50px;"><img wicket:id="clientImage" style="min-width: 50px; height:50px" /></td>
+ <td style="width: 350px; height:50px">
+ <div style="width: 350px; height:50px"><span wicket:id="clientLogin"></span> <wicket:message key="408"/> <span wicket:id="from"></span></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </fieldset>
+ </td>
+ </tr>
+ </table>
+</wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
index 6399fd0..1bd414c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
@@ -1,137 +1,137 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.rooms;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.image.Image;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.resource.ByteArrayResource;
-import org.apache.wicket.util.io.IOUtils;
-
-public class RoomsPanel extends UserPanel {
- private static final long serialVersionUID = 1L;
- private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
- private final WebMarkupContainer details = new WebMarkupContainer("details");
- private final ListView<Client> clients;
- private IModel<Long> roomID = Model.of((Long)null);
- private IModel<String> roomName = Model.of((String)null);
- private IModel<String> roomComment = Model.of((String)null);
- private List<Client> clientsInRoom = null;
- private Long roomId = 0L;
-
- public RoomsPanel(String id, List<Room> rooms) {
- super(id);
- add(new RoomListPanel("list", rooms, Application.getString(131)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onContainerClick(AjaxRequestTarget target, Room r) {
- roomId = r.getId();
- updateRoomDetails(target);
- }
-
- @Override
- public void onRefreshClick(AjaxRequestTarget target, Room r) {
- super.onRefreshClick(target, r);
- roomId = r.getId();
- updateRoomDetails(target);
- }
- });
-
- // Users in this Room
- add(details.setOutputMarkupId(true).setVisible(rooms.size() > 0));
- details.add(new Label("roomId", roomID));
- details.add(new Label("roomName", roomName));
- details.add(new Label("roomComment", roomComment));
- clients = new ListView<Client>("clients", clientsInRoom){
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final ListItem<Client> item) {
- Client client = item.getModelObject();
- final Long userId = client.getUserId();
- item.add(new Image("clientImage", new ByteArrayResource("image/jpeg") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected ResourceResponse newResourceResponse(Attributes attributes) {
- ResourceResponse rr = super.newResourceResponse(attributes);
- rr.disableCaching();
- return rr;
- }
-
- @Override
- protected byte[] getData(Attributes attributes) {
- String uri = null;
- if (userId != null) {
- uri = getBean(UserDao.class).get(userId > 0 ? userId : -userId).getPictureuri();
- }
- File img = OmFileHelper.getUserProfilePicture(userId, uri);
- try (InputStream is = new FileInputStream(img)) {
- return IOUtils.toByteArray(is);
- } catch (Exception e) {
- //no-op
- }
- return null;
- }
- }));
- item.add(new Label("clientLogin", client.getUser().getLogin()));
- item.add(new Label("from", client.getConnectedSince()));
- }
- };
- details.add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
- }
-
- void updateRoomDetails(AjaxRequestTarget target) {
- final List<Client> clientsInRoom = Application.getRoomClients(roomId);
- clients.setDefaultModelObject(clientsInRoom);
- Room room = getBean(RoomDao.class).get(roomId);
- roomID.setObject(room.getId());
- roomName.setObject(room.getName());
- roomComment.setObject(room.getComment());
- target.add(clientsContainer, details);
- }
-
- @Override
- protected void onDetach() {
- roomID.detach();
- roomName.detach();
- roomComment.detach();
- super.onDetach();
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.rooms;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.basic.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.ByteArrayResource;
+import org.apache.wicket.util.io.IOUtils;
+
+public class RoomsPanel extends UserPanel {
+ private static final long serialVersionUID = 1L;
+ private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
+ private final WebMarkupContainer details = new WebMarkupContainer("details");
+ private final ListView<Client> clients;
+ private IModel<Long> roomID = Model.of((Long)null);
+ private IModel<String> roomName = Model.of((String)null);
+ private IModel<String> roomComment = Model.of((String)null);
+ private List<Client> clientsInRoom = null;
+ private Long roomId = 0L;
+
+ public RoomsPanel(String id, List<Room> rooms) {
+ super(id);
+ add(new RoomListPanel("list", rooms, Application.getString(131)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onContainerClick(AjaxRequestTarget target, Room r) {
+ roomId = r.getId();
+ updateRoomDetails(target);
+ }
+
+ @Override
+ public void onRefreshClick(AjaxRequestTarget target, Room r) {
+ super.onRefreshClick(target, r);
+ roomId = r.getId();
+ updateRoomDetails(target);
+ }
+ });
+
+ // Users in this Room
+ add(details.setOutputMarkupId(true).setVisible(rooms.size() > 0));
+ details.add(new Label("roomId", roomID));
+ details.add(new Label("roomName", roomName));
+ details.add(new Label("roomComment", roomComment));
+ clients = new ListView<Client>("clients", clientsInRoom){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final ListItem<Client> item) {
+ Client client = item.getModelObject();
+ final Long userId = client.getUserId();
+ item.add(new Image("clientImage", new ByteArrayResource("image/jpeg") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected ResourceResponse newResourceResponse(Attributes attributes) {
+ ResourceResponse rr = super.newResourceResponse(attributes);
+ rr.disableCaching();
+ return rr;
+ }
+
+ @Override
+ protected byte[] getData(Attributes attributes) {
+ String uri = null;
+ if (userId != null) {
+ uri = getBean(UserDao.class).get(userId > 0 ? userId : -userId).getPictureuri();
+ }
+ File img = OmFileHelper.getUserProfilePicture(userId, uri);
+ try (InputStream is = new FileInputStream(img)) {
+ return IOUtils.toByteArray(is);
+ } catch (Exception e) {
+ //no-op
+ }
+ return null;
+ }
+ }));
+ item.add(new Label("clientLogin", client.getUser().getLogin()));
+ item.add(new Label("from", client.getConnectedSince()));
+ }
+ };
+ details.add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
+ }
+
+ void updateRoomDetails(AjaxRequestTarget target) {
+ final List<Client> clientsInRoom = Application.getRoomClients(roomId);
+ clients.setDefaultModelObject(clientsInRoom);
+ Room room = getBean(RoomDao.class).get(roomId);
+ roomID.setObject(room.getId());
+ roomName.setObject(room.getName());
+ roomComment.setObject(room.getComment());
+ target.add(clientsContainer, details);
+ }
+
+ @Override
+ protected void onDetach() {
+ roomID.detach();
+ roomName.detach();
+ roomComment.detach();
+ super.onDetach();
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
index dde60ba..f433301 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
@@ -1,27 +1,27 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <div wicket:id="title" class="rooms title"></div>
- <div wicket:id="desc" class="rooms desc info-text"></div>
- <div wicket:id="rooms"></div>
-</wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div wicket:id="title" class="rooms title"></div>
+ <div wicket:id="desc" class="rooms desc info-text"></div>
+ <div wicket:id="rooms"></div>
+</wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
index eb0ef24..b931e24 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
@@ -1,56 +1,56 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.rooms;
-
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.openmeetings.web.util.OmUrlFragment.MenuParams;
-import org.apache.wicket.markup.html.basic.Label;
-
-public class RoomsSelectorPanel extends UserPanel {
- private static final long serialVersionUID = 1L;
-
- public RoomsSelectorPanel(String id, MenuParams param) {
- super(id);
-
- long title, desc;
- RoomDao roomDao = Application.getBean(RoomDao.class);
- switch (param) {
- case myTabButton:
- title = 781L;
- desc = 782L;
- add(new RoomsPanel("rooms", getMyRooms()));
- break;
- case privateTabButton:
- title = 779L;
- desc = 780L;
- add(new RoomsTabbedPanel("rooms"));
- break;
- case publicTabButton:
- default:
- title = 777L;
- desc = 778L;
- add(new RoomsPanel("rooms", roomDao.getPublicRooms()));
- break;
- }
- add(new Label("title", Application.getString(title)));
- add(new Label("desc", Application.getString(desc)));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.rooms;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.openmeetings.web.util.OmUrlFragment.MenuParams;
+import org.apache.wicket.markup.html.basic.Label;
+
+public class RoomsSelectorPanel extends UserPanel {
+ private static final long serialVersionUID = 1L;
+
+ public RoomsSelectorPanel(String id, MenuParams param) {
+ super(id);
+
+ long title, desc;
+ RoomDao roomDao = Application.getBean(RoomDao.class);
+ switch (param) {
+ case myTabButton:
+ title = 781L;
+ desc = 782L;
+ add(new RoomsPanel("rooms", getMyRooms()));
+ break;
+ case privateTabButton:
+ title = 779L;
+ desc = 780L;
+ add(new RoomsTabbedPanel("rooms"));
+ break;
+ case publicTabButton:
+ default:
+ title = 777L;
+ desc = 778L;
+ add(new RoomsPanel("rooms", roomDao.getPublicRooms()));
+ break;
+ }
+ add(new Label("title", Application.getString(title)));
+ add(new Label("desc", Application.getString(desc)));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
index b8aa48b..a92599d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div id="orgTabs">
- <ul>
- <li wicket:id="orgTabs"><a wicket:id="link"><wicket:container wicket:id="name"></wicket:container></a></li>
- </ul>
- <wicket:container wicket:id="orgRooms"><div wicket:id="rooms"></div></wicket:container>
- </div>
- </wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div id="orgTabs">
+ <ul>
+ <li wicket:id="orgTabs"><a wicket:id="link"><wicket:container wicket:id="name"></wicket:container></a></li>
+ </ul>
+ <wicket:container wicket:id="orgRooms"><div wicket:id="rooms"></div></wicket:container>
+ </div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
index 89eaa24..f73a2d9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
@@ -1,70 +1,70 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.rooms;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.model.Model;
-
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
-
-public class RoomsTabbedPanel extends UserPanel {
- private static final long serialVersionUID = 3642004664480074881L;
-
- public RoomsTabbedPanel(String id) {
- super(id);
-
- User u = getBean(UserDao.class).get(getUserId());
- add(new ListView<GroupUser>("orgTabs", u.getGroupUsers()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(ListItem<GroupUser> item) {
- Group org = item.getModelObject().getGroup();
- item.add(new WebMarkupContainer("link")
- .add(new Label("name", Model.of(org.getName())))
- .add(new AttributeModifier("href", "#org" + org.getId())));
- }
- });
- add(new ListView<GroupUser>("orgRooms", u.getGroupUsers()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(ListItem<GroupUser> item) {
- Group org = item.getModelObject().getGroup();
- item.add(new RoomsPanel("rooms"
- , getBean(RoomDao.class).getGroupRooms(org.getId()))
- .setMarkupId("org" + org.getId())).setRenderBodyOnly(true);
- }
- });
- add(new JQueryBehavior("#orgTabs", "tabs"));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.rooms;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+
+public class RoomsTabbedPanel extends UserPanel {
+ private static final long serialVersionUID = 3642004664480074881L;
+
+ public RoomsTabbedPanel(String id) {
+ super(id);
+
+ User u = getBean(UserDao.class).get(getUserId());
+ add(new ListView<GroupUser>("orgTabs", u.getGroupUsers()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(ListItem<GroupUser> item) {
+ Group org = item.getModelObject().getGroup();
+ item.add(new WebMarkupContainer("link")
+ .add(new Label("name", Model.of(org.getName())))
+ .add(new AttributeModifier("href", "#org" + org.getId())));
+ }
+ });
+ add(new ListView<GroupUser>("orgRooms", u.getGroupUsers()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(ListItem<GroupUser> item) {
+ Group org = item.getModelObject().getGroup();
+ item.add(new RoomsPanel("rooms"
+ , getBean(RoomDao.class).getGroupRooms(org.getId()))
+ .setMarkupId("org" + org.getId())).setRenderBodyOnly(true);
+ }
+ });
+ add(new JQueryBehavior("#orgTabs", "tabs"));
+ }
+}
[13/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/OpenOfficeConverter.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/OpenOfficeConverter.xml b/openmeetings-server/src/site/xdoc/OpenOfficeConverter.xml
index b4848b5..66e48b9 100644
--- a/openmeetings-server/src/site/xdoc/OpenOfficeConverter.xml
+++ b/openmeetings-server/src/site/xdoc/OpenOfficeConverter.xml
@@ -1,54 +1,54 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>OpenOffice converter for OpenMeetings</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="OpenOffice Service for OpenMeetings">
- <p>
- To import .doc, .docx, .odp, .xls, .xlsx, .ppt, .pptx, ... [ all
- files that you can open with OpenOffice ]
- to OpenMeetings and use
- them in the whiteboard you need OpenOffice or LibreOffice
- installed the machine that runs OpenMeetings.
- </p>
- <div class="alert alert-success">
- <i>Since Version 2.0 of OpenMeetings starting of
- OpenOffice/LibreOffice as service in not required, JODConverter
- will automatically start and shut down the service!
- </i>
- </div>
- <div class="alert alert-success">
- <i>JODConverter is bundled into OpenMeetings since 3.1.4</i>
- </div>
- <p>
- Installation of JODConverter means: You download the ZIP binary from
- their
- <a href="https://code.google.com/archive/p/jodconverter/downloads" target="_blank" rel="nofollow">website</a>
- and then configure in Apache OpenMeetings Administration >
- Configuration (or during installation) the config key
- <tt>jod.path</tt>
- to point to the "lib" directory of the unpacked JODConverter binary.
- There is no restart of OpenMeetings required.
- </p>
- <p>You should use an OpenOffice version greater 3</p>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>OpenOffice converter for OpenMeetings</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="OpenOffice Service for OpenMeetings">
+ <p>
+ To import .doc, .docx, .odp, .xls, .xlsx, .ppt, .pptx, ... [ all
+ files that you can open with OpenOffice ]
+ to OpenMeetings and use
+ them in the whiteboard you need OpenOffice or LibreOffice
+ installed the machine that runs OpenMeetings.
+ </p>
+ <div class="alert alert-success">
+ <i>Since Version 2.0 of OpenMeetings starting of
+ OpenOffice/LibreOffice as service in not required, JODConverter
+ will automatically start and shut down the service!
+ </i>
+ </div>
+ <div class="alert alert-success">
+ <i>JODConverter is bundled into OpenMeetings since 3.1.4</i>
+ </div>
+ <p>
+ Installation of JODConverter means: You download the ZIP binary from
+ their
+ <a href="https://code.google.com/archive/p/jodconverter/downloads" target="_blank" rel="nofollow">website</a>
+ and then configure in Apache OpenMeetings Administration >
+ Configuration (or during installation) the config key
+ <tt>jod.path</tt>
+ to point to the "lib" directory of the unpacked JODConverter binary.
+ There is no restart of OpenMeetings required.
+ </p>
+ <p>You should use an OpenOffice version greater 3</p>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/OracleConfig.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/OracleConfig.xml b/openmeetings-server/src/site/xdoc/OracleConfig.xml
index 3165724..e59c78a 100644
--- a/openmeetings-server/src/site/xdoc/OracleConfig.xml
+++ b/openmeetings-server/src/site/xdoc/OracleConfig.xml
@@ -1,61 +1,61 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Oracle Configuration</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="IBM DB2 Configuration">
-
- <subsection name="Before you start">
- <ul>
- <li>Download the latest JDBC Driver from Oracle for your database
- version. Place those JARs into
- $Red5/webapps/openmeetings/WEB-INF/lib
- </li>
- <li>If you encounter issues, you can drop the db and then run
- the web based installer again
- </li>
- </ul>
- </subsection>
-
- <subsection name="Steps todo">
- <ul>
- <li>
- Run red5-service and goto the web-based installer:
- http://localhost:5080/openmeetings/install
- </li>
- </ul>
- </subsection>
-
- <subsection name="Oracle Sample Configuration">
- <p>
- There is a sample configuration for Oracle that ships with
- every release in:
- <br />
- /webapps/openmeetings/WEB-INF/classes/META-INF/oracle_persistence.xml
- </p>
- </subsection>
-
-
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Oracle Configuration</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="IBM DB2 Configuration">
+
+ <subsection name="Before you start">
+ <ul>
+ <li>Download the latest JDBC Driver from Oracle for your database
+ version. Place those JARs into
+ $Red5/webapps/openmeetings/WEB-INF/lib
+ </li>
+ <li>If you encounter issues, you can drop the db and then run
+ the web based installer again
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="Steps todo">
+ <ul>
+ <li>
+ Run red5-service and goto the web-based installer:
+ http://localhost:5080/openmeetings/install
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="Oracle Sample Configuration">
+ <p>
+ There is a sample configuration for Oracle that ships with
+ every release in:
+ <br />
+ /webapps/openmeetings/WEB-INF/classes/META-INF/oracle_persistence.xml
+ </p>
+ </subsection>
+
+
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/PortSettings.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/PortSettings.xml b/openmeetings-server/src/site/xdoc/PortSettings.xml
index e5a15d5..19ff013 100644
--- a/openmeetings-server/src/site/xdoc/PortSettings.xml
+++ b/openmeetings-server/src/site/xdoc/PortSettings.xml
@@ -1,86 +1,86 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Port settings</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Default Configuration">
- <ul>
- <li>Port 5080: HTTP (For example for file upload and download) </li>
- <li>Port 1935: RTMP (Flash Stream and Remoting/RPC) </li>
- </ul>
- <p>Additionally red5 uses some ports internally. However those ports
- are not in use by OpenMeetings by default.
- </p>
- </section>
-
- <section name="Configure alternative ports">
- <p>You need to change two files: </p>
- <ul>
- <li>Server-Side configuration: $RED5_HOME/conf/red5.properties, you
- need to restart the red5-service so that changes are online.
- </li>
- <li>Client-Side configuration:
- $RED5_HOME/webapps/openmeetings/public/config.xml, you need to clear your
- browser cache after changing the file.
- </li>
- <li>
- <tt>Every server side configuration has a client side representative</tt>
- </li>
- </ul>
- <p></p>
- <table>
- <tr>
- <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Config-Name </th>
- <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Default-value </th>
- <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Name in red5.properties </th>
- <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Name in public/config.xml </th>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> HTTP </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 5080 </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> http.port </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> red5httpport </td>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> RTMP </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 1935 </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> rtmp.port </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> rtmpport </td>
- </tr>
- </table>
- </section>
-
- <section name="Preventing Firewall issues">
- <p>A common way of bypassing the firewall is to change HTTP port to 80</p>
- <p>A short description about the connection mechanism: The
- application first tries connecting to rtmp 3 times, because rtmp is
- the protocol that is less performance hungry. If that fails the
- application will fallback to rtmpT.
- </p>
- </section>
-
- <section name="OpenMeetings over SSL">
- <p>
- You can run OpenMeetings completely over SSL. See <a href="RTMPSAndHTTPS.html">RTMPSAndHTTPS</a>.
- </p>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Port settings</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Default Configuration">
+ <ul>
+ <li>Port 5080: HTTP (For example for file upload and download) </li>
+ <li>Port 1935: RTMP (Flash Stream and Remoting/RPC) </li>
+ </ul>
+ <p>Additionally red5 uses some ports internally. However those ports
+ are not in use by OpenMeetings by default.
+ </p>
+ </section>
+
+ <section name="Configure alternative ports">
+ <p>You need to change two files: </p>
+ <ul>
+ <li>Server-Side configuration: $RED5_HOME/conf/red5.properties, you
+ need to restart the red5-service so that changes are online.
+ </li>
+ <li>Client-Side configuration:
+ $RED5_HOME/webapps/openmeetings/public/config.xml, you need to clear your
+ browser cache after changing the file.
+ </li>
+ <li>
+ <tt>Every server side configuration has a client side representative</tt>
+ </li>
+ </ul>
+ <p></p>
+ <table>
+ <tr>
+ <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Config-Name </th>
+ <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Default-value </th>
+ <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Name in red5.properties </th>
+ <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Name in public/config.xml </th>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> HTTP </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 5080 </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> http.port </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> red5httpport </td>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> RTMP </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 1935 </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> rtmp.port </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> rtmpport </td>
+ </tr>
+ </table>
+ </section>
+
+ <section name="Preventing Firewall issues">
+ <p>A common way of bypassing the firewall is to change HTTP port to 80</p>
+ <p>A short description about the connection mechanism: The
+ application first tries connecting to rtmp 3 times, because rtmp is
+ the protocol that is less performance hungry. If that fails the
+ application will fallback to rtmpT.
+ </p>
+ </section>
+
+ <section name="OpenMeetings over SSL">
+ <p>
+ You can run OpenMeetings completely over SSL. See <a href="RTMPSAndHTTPS.html">RTMPSAndHTTPS</a>.
+ </p>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/PostgresConfig.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/PostgresConfig.xml b/openmeetings-server/src/site/xdoc/PostgresConfig.xml
index 1bbdfe2..9f6b33d 100644
--- a/openmeetings-server/src/site/xdoc/PostgresConfig.xml
+++ b/openmeetings-server/src/site/xdoc/PostgresConfig.xml
@@ -1,72 +1,72 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>PostgreSQL Configuration</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="PostgreSQL Configuration">
-
- <subsection name="Before you start">
- <ul>
- <li>Make sure that you have set utf8 as default/server-character-set
- </li>
- <li>
- make sure PostgreSQL is listening on TCP/IP connections!
- <br />
- To verify if PostgreSQL connection is working: OpenMeetings will
- automatically create all tables in the database and all tables
- should have utf8 as encoding/collation!
- </li>
- <li>If you encounter issues, you can drop the db and then run
- the web based installer again
- </li>
- <li><span style="font-size: larger; color: blue;">IMPORTANT</span> According to
- <a href="http://markmail.org/message/opymlab2e6wygb7p">this</a> thread you need to ensure:<br/>
- <tt>standard_conforming_strings</tt> is set to <tt><b>on</b></tt> and <br/>
- <tt>escape_string_warning</tt> is set to <tt><b>off</b></tt>
- </li>
- </ul>
- </subsection>
-
- <subsection name="Steps todo">
- <ul>
- <li>
- Run red5-service and goto the web-based installer:
- http://localhost:5080/openmeetings/install
- </li>
- </ul>
- </subsection>
-
- <subsection name="PostgreSQL Sample Configuration">
- <p>
- There is a sample configuration for PostgreSQL that ships with
- every
- release in:
- <br />
- /webapps/openmeetings/WEB-INF/classes/META-INF/postgresql_persistence.xml
- </p>
- </subsection>
-
-
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>PostgreSQL Configuration</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="PostgreSQL Configuration">
+
+ <subsection name="Before you start">
+ <ul>
+ <li>Make sure that you have set utf8 as default/server-character-set
+ </li>
+ <li>
+ make sure PostgreSQL is listening on TCP/IP connections!
+ <br />
+ To verify if PostgreSQL connection is working: OpenMeetings will
+ automatically create all tables in the database and all tables
+ should have utf8 as encoding/collation!
+ </li>
+ <li>If you encounter issues, you can drop the db and then run
+ the web based installer again
+ </li>
+ <li><span style="font-size: larger; color: blue;">IMPORTANT</span> According to
+ <a href="http://markmail.org/message/opymlab2e6wygb7p">this</a> thread you need to ensure:<br/>
+ <tt>standard_conforming_strings</tt> is set to <tt><b>on</b></tt> and <br/>
+ <tt>escape_string_warning</tt> is set to <tt><b>off</b></tt>
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="Steps todo">
+ <ul>
+ <li>
+ Run red5-service and goto the web-based installer:
+ http://localhost:5080/openmeetings/install
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="PostgreSQL Sample Configuration">
+ <p>
+ There is a sample configuration for PostgreSQL that ships with
+ every
+ release in:
+ <br />
+ /webapps/openmeetings/WEB-INF/classes/META-INF/postgresql_persistence.xml
+ </p>
+ </subsection>
+
+
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/RTMPSAndHTTPS.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/RTMPSAndHTTPS.xml b/openmeetings-server/src/site/xdoc/RTMPSAndHTTPS.xml
index ffeec0b..0b2f534 100644
--- a/openmeetings-server/src/site/xdoc/RTMPSAndHTTPS.xml
+++ b/openmeetings-server/src/site/xdoc/RTMPSAndHTTPS.xml
@@ -1,217 +1,217 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Using OpenMeetings with RTMPS and HTTPS</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Using OpenMeetings with RTMPS and HTTPS">
- <p>There are 3 ways the client communicates with the server: </p>
- <ul>
- <li>The flash-client uses RTMP protocol to transfer Audio/Video and
- to send and receive the user data (login et cetera) to the server
- and back
- </li>
- <li>The browser uses HTTP protocol to load the SWF and to upload and
- download the files (documents, pdfs, images) to the server and
- back.
- </li>
- <li>The screensharing client uses RTMP protocol to transfer screen
- data and remote control to the server and back
- </li>
- </ul>
- </section>
- <section name="Prerequisites">
- <ul>
- <li>You need OpenMeetings 1.9.x or later for this, OpenMeetings 1.8.x does not have those options.</li>
- <li>Install OpenMeetings according to the install instructions and check that it runs without problems</li>
- <li>Rename the existing keystore file <tt>red5/conf/keystore.jmx</tt> to <tt>red5/conf/keystore.bak</tt></li>
- <li>Rename the existing truststore file <tt>red5/conf/truststore.jmx</tt> to <tt>red5/conf/truststore.bak</tt></li>
- </ul>
- </section>
- <section name="Create Keystore from the scratch (*)">
- <ol>
- <li>
- Create a new keystore and key, use the same password for both:<br/>
- <br/><source><![CDATA[
-keytool -keysize 2048 -genkey -alias red5 -keyalg RSA -keystore red5/conf/keystore
-Enter keystore password:
-Re-enter new password:
-What is your first and last name?
-[Unknown]: <your hostname, e.g demo.openmeetings.de>
-What is the name of your organizational unit?
-[Unknown]: Dev
-What is the name of your organization?
-[Unknown]: OpenMeetings
-What is the name of your City or Locality?
-[Unknown]: Henderson
-What is the name of your State or Province?
-[Unknown]: Nevada
-What is the two-letter country code for this unit?
-[Unknown]: US
-Is CN=demo.openmeetings.de, OU=Dev, O=OpenMeetings, L=Henderson, ST=Nevada, C=US correct?
-[no]: yes
-Enter key password for <red5>
-]]></source>
- </li>
- <li>Generate a CSR: <source><![CDATA[keytool -certreq -keyalg RSA -alias red5 -file red5.csr -keystore red5/conf/keystore]]></source>
- </li>
- <li>Submit CSR to your CA of choice and receive a signed certificate
- </li>
- <li>Import your chosen CA's root certificate into the keystore (may
- need to download it from their site - make sure to get the root CA and
- not the intermediate one):
- <source><![CDATA[keytool -import -alias root -keystore red5/conf/keystore -trustcacerts -file root.crt]]></source>
- (note: you may receive a warning that the certificate already exists in the system wide keystore - import
- anyway)
- </li>
- <li>Import the intermediate certificate(s) you normally receive with
- the certificate:
- <source><![CDATA[keytool -import -alias intermed -keystore red5/conf/keystore -trustcacerts -file intermediate.crt]]></source>
- </li>
- <li>Import the certificate you received:
- <source><![CDATA[keytool -import -alias red5 -keystore red5/conf/keystore -trustcacerts -file demo.openmeetings.de.crt]]></source>
- </li>
- <li>Please NOTE according to this <a href="http://javarevisited.blogspot.com/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html">http://javarevisited.blogspot.com/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html</a>
- guide you can split keystore and truststore (OPTIONAL you might just copy keystore to truststore)
- </li>
- <li>Create additional certificate as described above.
- Add this certificate to the following keystores: <tt>red5/conf/keystore.screen</tt> and <tt>red5/conf/keystore</tt>. (This step is required to be able to use
- screen-sharing web application, you can copy "main" keystore while testing)
- </li>
- </ol>
- </section>
- <section name="Create Keystore using existing key-pair (**)">
- <p>Prerequicites:</p>
- <ul>
- <li>Server key: red5.key</li>
- <li>Signed CSR: red5.crt</li>
- <li>CA's root certificate: root.crt</li>
- <li>** Intermediate certificate(s): intermedXX.crt</li>
- </ul>
- <ol>
- <li>
- Export existing keys into PKCS12 format:<br/>
- <br/><source><![CDATA[
-openssl pkcs12 -export -in red5.crt -inkey red5.key -out red5.p12 -name red5 -certfile root.crt -certfile intermedXX.crt
-
-Enter Export Password: password
-Verifying - Enter Export Password: password
-]]></source>
- </li>
- <li>Import resulting red5.p12 into keystore: <source><![CDATA[
-keytool -importkeystore -srcstorepass password -srckeystore red5.p12 -srcstoretype PKCS12 -deststorepass password -destkeystore red5/conf/keystore -alias red5
-]]></source>
- </li>
- <li>Import your chosen CA's root certificate into the keystore (may
- need to download it from their site - make sure to get the root CA and
- not the intermediate one):
- <source><![CDATA[keytool -import -alias root -keystore red5/conf/keystore -trustcacerts -file root.crt]]></source>
- (note: you may receive a warning that the certificate already exists in the system wide keystore - import
- anyway)
- </li>
- <li>Import the intermediate certificate(s) you normally receive with
- the certificate:
- <source><![CDATA[keytool -import -alias intermed -keystore red5/conf/keystore -trustcacerts -file intermedXX.crt]]></source>
- </li>
- <li>Please NOTE according to this <a href="http://javarevisited.blogspot.com/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html">http://javarevisited.blogspot.com/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html</a>
- guide you can split keystore and truststore (OPTIONAL you might just copy keystore to truststore)
- </li>
- <li>Create additional certificate as described above.
- Add this certificate to the following keystores: <tt>red5/conf/keystore.screen</tt> and <tt>red5/conf/keystore</tt>. (This step is required to be able to use
- screen-sharing web application, you can copy "main" keystore while testing)
- </li>
- </ol>
- </section>
- <section name="SSL for the web interface">
- <p>Please perform following steps if you want to use SSL for the web interface.
- This is mainly to secure the server against MITM attacks, additionally some other features
- like file uploads also use a plain HTTP connection if this is not
- done. The following instructions assume that you have already set up
- RTMPS successfully. </p>
- <ol>
- <li>
- Edit <tt>red5/conf/jee-container.xml</tt> file:<br/>
- Comment <tt>Tomcat without SSL enabled</tt> section<br/>
- UNComment <tt>Tomcat with SSL enabled</tt> section
- </li>
- <li>
- Edit <tt>red5/webapps/openmeetings/public/config.xml</tt> and set
- <br/><source><![CDATA[
- <protocol>https</protocol>
- <red5httpport>5443</red5httpport>
-]]></source>
- </li>
- <li>
- Restart red5 and try to connect to
- <u>https://your.server:5443</u> - you should be redirected to the OpenMeetings
- app and all access should be via HTTPS and/or RTMPS (close port 5080 to be sure).
- </li>
- </ol>
- </section>
- <section name="Set up RTMPS">
- <h3>Tunneling RTMPS</h3>
- <ol>
- <li>HTTPS need to be enabled otherwise tunneling will not work (it can be set up using frontend nginx/apache as well)</li>
- <li>
- Edit <tt>red5/webapps/openmeetings/public/config.xml</tt> and set<br/>
- <br/><source><![CDATA[
- <rtmpsslport>5443</rtmpsslport>
- <useSSL>yes</useSSL>
- <proxyType>none</proxyType>
-]]></source>
- </li>
- <li>Please NOTE <tt>rtmpsslport</tt> port set in <tt>red5/webapps/openmeetings/public/config.xml</tt> should match
- <tt>https</tt> port set in <tt>red5/conf/red5.properties</tt>
- </li>
- <li>Restart red5 and try to connect - your connection should now be made via RTMPS (close port 1935 to be sure)
- </li>
- </ol>
- <h3>Native RTMPS</h3>
- <ol>
- <li> Default RTMPS port is 8443, you can change it by editing <tt>red5/conf/red5.properties</tt> and change the port here: <tt>rtmps.port=8443</tt><br/>
- Please set <tt>rtmps.keystorepass=password</tt> and <tt>rtmps.truststorepass=password</tt>
- (password = password you set on your new keystore(s))<br/>
- Additionally you need to set <tt>rtmps.screen.keystorepass=screenpassword</tt> (screenpassword = password you set on your keystore for screen-sharing application)
- </li>
- <li>
- Edit <tt>red5/conf/red5-core.xml</tt> file:<br/>
- UNComment <tt>RTMPS</tt> section
- </li>
- <li>
- Edit <tt>red5/webapps/openmeetings/public/config.xml</tt> and set<br/>
- <br/><source><![CDATA[
- <rtmpsslport>8443</rtmpsslport>
- <useSSL>yes</useSSL>
- <proxyType>best</proxyType>
-]]></source>
- </li>
- <li>Please NOTE <tt>rtmps</tt> port set in <tt>red5/conf/red5.properties</tt> should be in sync with the <tt>rtmpsslport</tt> set in
- <tt>red5/webapps/openmeetings/public/config.xml</tt>
- </li>
- <li>Restart red5 and try to connect - your connection should now be made via RTMPS (close port 1935 to be sure)
- </li>
- </ol>
- </section>
- <section name="Credits">
- <p>Credits goto: Nexus and Holger Rabbach for their help and
- contribution and configuration documention! </p>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Using OpenMeetings with RTMPS and HTTPS</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Using OpenMeetings with RTMPS and HTTPS">
+ <p>There are 3 ways the client communicates with the server: </p>
+ <ul>
+ <li>The flash-client uses RTMP protocol to transfer Audio/Video and
+ to send and receive the user data (login et cetera) to the server
+ and back
+ </li>
+ <li>The browser uses HTTP protocol to load the SWF and to upload and
+ download the files (documents, pdfs, images) to the server and
+ back.
+ </li>
+ <li>The screensharing client uses RTMP protocol to transfer screen
+ data and remote control to the server and back
+ </li>
+ </ul>
+ </section>
+ <section name="Prerequisites">
+ <ul>
+ <li>You need OpenMeetings 1.9.x or later for this, OpenMeetings 1.8.x does not have those options.</li>
+ <li>Install OpenMeetings according to the install instructions and check that it runs without problems</li>
+ <li>Rename the existing keystore file <tt>red5/conf/keystore.jmx</tt> to <tt>red5/conf/keystore.bak</tt></li>
+ <li>Rename the existing truststore file <tt>red5/conf/truststore.jmx</tt> to <tt>red5/conf/truststore.bak</tt></li>
+ </ul>
+ </section>
+ <section name="Create Keystore from the scratch (*)">
+ <ol>
+ <li>
+ Create a new keystore and key, use the same password for both:<br/>
+ <br/><source><![CDATA[
+keytool -keysize 2048 -genkey -alias red5 -keyalg RSA -keystore red5/conf/keystore
+Enter keystore password:
+Re-enter new password:
+What is your first and last name?
+[Unknown]: <your hostname, e.g demo.openmeetings.de>
+What is the name of your organizational unit?
+[Unknown]: Dev
+What is the name of your organization?
+[Unknown]: OpenMeetings
+What is the name of your City or Locality?
+[Unknown]: Henderson
+What is the name of your State or Province?
+[Unknown]: Nevada
+What is the two-letter country code for this unit?
+[Unknown]: US
+Is CN=demo.openmeetings.de, OU=Dev, O=OpenMeetings, L=Henderson, ST=Nevada, C=US correct?
+[no]: yes
+Enter key password for <red5>
+]]></source>
+ </li>
+ <li>Generate a CSR: <source><![CDATA[keytool -certreq -keyalg RSA -alias red5 -file red5.csr -keystore red5/conf/keystore]]></source>
+ </li>
+ <li>Submit CSR to your CA of choice and receive a signed certificate
+ </li>
+ <li>Import your chosen CA's root certificate into the keystore (may
+ need to download it from their site - make sure to get the root CA and
+ not the intermediate one):
+ <source><![CDATA[keytool -import -alias root -keystore red5/conf/keystore -trustcacerts -file root.crt]]></source>
+ (note: you may receive a warning that the certificate already exists in the system wide keystore - import
+ anyway)
+ </li>
+ <li>Import the intermediate certificate(s) you normally receive with
+ the certificate:
+ <source><![CDATA[keytool -import -alias intermed -keystore red5/conf/keystore -trustcacerts -file intermediate.crt]]></source>
+ </li>
+ <li>Import the certificate you received:
+ <source><![CDATA[keytool -import -alias red5 -keystore red5/conf/keystore -trustcacerts -file demo.openmeetings.de.crt]]></source>
+ </li>
+ <li>Please NOTE according to this <a href="http://javarevisited.blogspot.com/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html">http://javarevisited.blogspot.com/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html</a>
+ guide you can split keystore and truststore (OPTIONAL you might just copy keystore to truststore)
+ </li>
+ <li>Create additional certificate as described above.
+ Add this certificate to the following keystores: <tt>red5/conf/keystore.screen</tt> and <tt>red5/conf/keystore</tt>. (This step is required to be able to use
+ screen-sharing web application, you can copy "main" keystore while testing)
+ </li>
+ </ol>
+ </section>
+ <section name="Create Keystore using existing key-pair (**)">
+ <p>Prerequicites:</p>
+ <ul>
+ <li>Server key: red5.key</li>
+ <li>Signed CSR: red5.crt</li>
+ <li>CA's root certificate: root.crt</li>
+ <li>** Intermediate certificate(s): intermedXX.crt</li>
+ </ul>
+ <ol>
+ <li>
+ Export existing keys into PKCS12 format:<br/>
+ <br/><source><![CDATA[
+openssl pkcs12 -export -in red5.crt -inkey red5.key -out red5.p12 -name red5 -certfile root.crt -certfile intermedXX.crt
+
+Enter Export Password: password
+Verifying - Enter Export Password: password
+]]></source>
+ </li>
+ <li>Import resulting red5.p12 into keystore: <source><![CDATA[
+keytool -importkeystore -srcstorepass password -srckeystore red5.p12 -srcstoretype PKCS12 -deststorepass password -destkeystore red5/conf/keystore -alias red5
+]]></source>
+ </li>
+ <li>Import your chosen CA's root certificate into the keystore (may
+ need to download it from their site - make sure to get the root CA and
+ not the intermediate one):
+ <source><![CDATA[keytool -import -alias root -keystore red5/conf/keystore -trustcacerts -file root.crt]]></source>
+ (note: you may receive a warning that the certificate already exists in the system wide keystore - import
+ anyway)
+ </li>
+ <li>Import the intermediate certificate(s) you normally receive with
+ the certificate:
+ <source><![CDATA[keytool -import -alias intermed -keystore red5/conf/keystore -trustcacerts -file intermedXX.crt]]></source>
+ </li>
+ <li>Please NOTE according to this <a href="http://javarevisited.blogspot.com/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html">http://javarevisited.blogspot.com/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html</a>
+ guide you can split keystore and truststore (OPTIONAL you might just copy keystore to truststore)
+ </li>
+ <li>Create additional certificate as described above.
+ Add this certificate to the following keystores: <tt>red5/conf/keystore.screen</tt> and <tt>red5/conf/keystore</tt>. (This step is required to be able to use
+ screen-sharing web application, you can copy "main" keystore while testing)
+ </li>
+ </ol>
+ </section>
+ <section name="SSL for the web interface">
+ <p>Please perform following steps if you want to use SSL for the web interface.
+ This is mainly to secure the server against MITM attacks, additionally some other features
+ like file uploads also use a plain HTTP connection if this is not
+ done. The following instructions assume that you have already set up
+ RTMPS successfully. </p>
+ <ol>
+ <li>
+ Edit <tt>red5/conf/jee-container.xml</tt> file:<br/>
+ Comment <tt>Tomcat without SSL enabled</tt> section<br/>
+ UNComment <tt>Tomcat with SSL enabled</tt> section
+ </li>
+ <li>
+ Edit <tt>red5/webapps/openmeetings/public/config.xml</tt> and set
+ <br/><source><![CDATA[
+ <protocol>https</protocol>
+ <red5httpport>5443</red5httpport>
+]]></source>
+ </li>
+ <li>
+ Restart red5 and try to connect to
+ <u>https://your.server:5443</u> - you should be redirected to the OpenMeetings
+ app and all access should be via HTTPS and/or RTMPS (close port 5080 to be sure).
+ </li>
+ </ol>
+ </section>
+ <section name="Set up RTMPS">
+ <h3>Tunneling RTMPS</h3>
+ <ol>
+ <li>HTTPS need to be enabled otherwise tunneling will not work (it can be set up using frontend nginx/apache as well)</li>
+ <li>
+ Edit <tt>red5/webapps/openmeetings/public/config.xml</tt> and set<br/>
+ <br/><source><![CDATA[
+ <rtmpsslport>5443</rtmpsslport>
+ <useSSL>yes</useSSL>
+ <proxyType>none</proxyType>
+]]></source>
+ </li>
+ <li>Please NOTE <tt>rtmpsslport</tt> port set in <tt>red5/webapps/openmeetings/public/config.xml</tt> should match
+ <tt>https</tt> port set in <tt>red5/conf/red5.properties</tt>
+ </li>
+ <li>Restart red5 and try to connect - your connection should now be made via RTMPS (close port 1935 to be sure)
+ </li>
+ </ol>
+ <h3>Native RTMPS</h3>
+ <ol>
+ <li> Default RTMPS port is 8443, you can change it by editing <tt>red5/conf/red5.properties</tt> and change the port here: <tt>rtmps.port=8443</tt><br/>
+ Please set <tt>rtmps.keystorepass=password</tt> and <tt>rtmps.truststorepass=password</tt>
+ (password = password you set on your new keystore(s))<br/>
+ Additionally you need to set <tt>rtmps.screen.keystorepass=screenpassword</tt> (screenpassword = password you set on your keystore for screen-sharing application)
+ </li>
+ <li>
+ Edit <tt>red5/conf/red5-core.xml</tt> file:<br/>
+ UNComment <tt>RTMPS</tt> section
+ </li>
+ <li>
+ Edit <tt>red5/webapps/openmeetings/public/config.xml</tt> and set<br/>
+ <br/><source><![CDATA[
+ <rtmpsslport>8443</rtmpsslport>
+ <useSSL>yes</useSSL>
+ <proxyType>best</proxyType>
+]]></source>
+ </li>
+ <li>Please NOTE <tt>rtmps</tt> port set in <tt>red5/conf/red5.properties</tt> should be in sync with the <tt>rtmpsslport</tt> set in
+ <tt>red5/webapps/openmeetings/public/config.xml</tt>
+ </li>
+ <li>Restart red5 and try to connect - your connection should now be made via RTMPS (close port 1935 to be sure)
+ </li>
+ </ol>
+ </section>
+ <section name="Credits">
+ <p>Credits goto: Nexus and Holger Rabbach for their help and
+ contribution and configuration documention! </p>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/RecommendedHardwareList.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/RecommendedHardwareList.xml b/openmeetings-server/src/site/xdoc/RecommendedHardwareList.xml
index 7e66cc5..daddf3b 100644
--- a/openmeetings-server/src/site/xdoc/RecommendedHardwareList.xml
+++ b/openmeetings-server/src/site/xdoc/RecommendedHardwareList.xml
@@ -1,59 +1,59 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Hardware</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Cameras">
- We recommend the following cameras:
- <ul>
- <li>Logitech QuickCam Sphere AF</li>
- <li>Logitech QuickCam E3500</li>
- <li>Samsung Pleomax PWC-7100</li>
- <li>Genius Look320S</li>
- <li>Integrated Lenovo 3000 n100</li>
- <li>Skypemate WC-103M</li>
- </ul>
- </section>
- <section name="Headsets">
- The recommended headset model (i.e. headphones with microphone) is:
- <ul>
- <li>Logitech Clear Chat Style</li>
- </ul>
- Also the following headsets showed good results:
- <ul>
- <li>ClearChat PC Wireless (helps to suppress echo)</li>
- <li>Logitech USB Desktop Microphone - Mikrophon (good sound, but bad echo cancellation)</li>
- </ul>
- <b>Note for Mac OS X users:</b> The build-in microphone normally has quite good quality and echo cancellation, so Mac OS X users often do not even require a headset.
- </section>
- <section name="Speakerphones">
- When several people participate from the same location, we recommend using the following speakerphone models:
- <ul>
- <li>Phoenix Audio Quattro2 USB Speakerphone MT301 (a single microphone + speakers can be used even with 20-30 people sitting in a room)</li>
- <li>Phoenix DUET Executive</li>
- <li>Jabra SPEAK410</li>
- <li>Plantronics MCD 100M</li>
- <li>Integrated Lenovo 3000 n100</li>
- <li>Konftel 300</li>
- </ul>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Hardware</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Cameras">
+ We recommend the following cameras:
+ <ul>
+ <li>Logitech QuickCam Sphere AF</li>
+ <li>Logitech QuickCam E3500</li>
+ <li>Samsung Pleomax PWC-7100</li>
+ <li>Genius Look320S</li>
+ <li>Integrated Lenovo 3000 n100</li>
+ <li>Skypemate WC-103M</li>
+ </ul>
+ </section>
+ <section name="Headsets">
+ The recommended headset model (i.e. headphones with microphone) is:
+ <ul>
+ <li>Logitech Clear Chat Style</li>
+ </ul>
+ Also the following headsets showed good results:
+ <ul>
+ <li>ClearChat PC Wireless (helps to suppress echo)</li>
+ <li>Logitech USB Desktop Microphone - Mikrophon (good sound, but bad echo cancellation)</li>
+ </ul>
+ <b>Note for Mac OS X users:</b> The build-in microphone normally has quite good quality and echo cancellation, so Mac OS X users often do not even require a headset.
+ </section>
+ <section name="Speakerphones">
+ When several people participate from the same location, we recommend using the following speakerphone models:
+ <ul>
+ <li>Phoenix Audio Quattro2 USB Speakerphone MT301 (a single microphone + speakers can be used even with 20-30 people sitting in a room)</li>
+ <li>Phoenix DUET Executive</li>
+ <li>Jabra SPEAK410</li>
+ <li>Plantronics MCD 100M</li>
+ <li>Integrated Lenovo 3000 n100</li>
+ <li>Konftel 300</li>
+ </ul>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/RedminePlugin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/RedminePlugin.xml b/openmeetings-server/src/site/xdoc/RedminePlugin.xml
index 9c6aed2..c302720 100644
--- a/openmeetings-server/src/site/xdoc/RedminePlugin.xml
+++ b/openmeetings-server/src/site/xdoc/RedminePlugin.xml
@@ -1,34 +1,34 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Redmine Plugin</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="OpenMeetings Plugin for Redmine">
- <p>
- Current Development Snapshots for testing can be created from the sources:
- <a href="https://github.com/openmeetings/openmeetings-redmine-plugin">here</a>.<br/>
- The page at redmine site is <a href="http://www.redmine.org/plugins/redmine-openmeetings">here</a>
- </p>
- </section>
- <section name="Features">
- <p>TBD</p>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Redmine Plugin</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="OpenMeetings Plugin for Redmine">
+ <p>
+ Current Development Snapshots for testing can be created from the sources:
+ <a href="https://github.com/openmeetings/openmeetings-redmine-plugin">here</a>.<br/>
+ The page at redmine site is <a href="http://www.redmine.org/plugins/redmine-openmeetings">here</a>
+ </p>
+ </section>
+ <section name="Features">
+ <p>TBD</p>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
index 8271385..db7ab1b 100644
--- a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
+++ b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
@@ -1,314 +1,314 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Release Guide</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="How to Build a Release of OpenMeetings">
- <subsection name="Required tools">
- <div>
- <p>To build a binary release of OpenMeetings you need: </p>
- <ul>
- <li>Sun JDK8</li>
- <li>Apache Maven 3.3.9</li>
- <li>
- SVN Command line client (Subversion 1.7 required!)
- <a href="http://subversion.apache.org/packages.html" target="_blank" rel="nofollow">http://subversion.apache.org/packages.html</a>
- </li>
- <li>A text editor</li>
- <li>You need to be online! The build process actively downloads needed libraries and dependencies.</li>
- <li>Valid certficate to be able to enter <a href="https://securesigning.websecurity.symantec.com/csportal/">https://securesigning.websecurity.symantec.com/csportal/</a>
- Please ask INFRA in case you need one.
- </li>
- </ul>
- </div>
- </subsection>
- <subsection name="Prepare your Apache ID">
- <div>
- <ul>
- <li><b>Every release package must be signed with a PGP/GPG key.</b><br />
- So if you want to release a package your Apache Id must be
- connected with a PGP key!
- <br />
- <br />
- You might follow:
- <br />
- <a
- href="http://www.apache.org/dev/new-committers-guide.html#security-and-pgp"
- target="_blank">http://www.apache.org/dev/new-committers-guide.html#security-and-pgp
- </a>
- <br />
- <br />
- In short:
- <ul>
- <li>Create PGP key pairs (private + public) (and I recommend creating a Revoke Cert)</li>
- <li>Upload the public key (either bei using the PGP Tool that you use
- to create the key) or by using the web form to:
- <a href="http://pgp.mit.edu/" target="_blank" rel="nofollow">http://pgp.mit.edu/</a>
- </li>
- <li>Add the fingerprint string (something like "BF13 CF11 F9C9 0CBE
- 4413 09AB 0055 16BF 93A3 0395") to your profile at
- <a href="https://id.apache.org/" target="_blank" rel="nofollow">https://id.apache.org/</a>
- </li>
- <li>
- Wait for 6-8 hours, the server will search for a public key based
- on your fingerprint, if success it will create a file with your
- name at:
- <br />
- <a href="https://people.apache.org/keys/committer/">https://people.apache.org/keys/committer/</a>
- </li>
- <li>
- If that is "success" then add your key to:
- <br />
- <a href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD">https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD</a>
- <br />
- <br />
- and follow the instructions in the file.
- </li>
- </ul>
- </li>
- <li><b>Maven</b><br/>
- <ul>
- <li>Ensure you able to login to <a href="https://repository.apache.org/">https://repository.apache.org</a></li>
- <li>
- Set up development environment as described here: <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">Setup development environment</a><br/>
- Don't forget to secure passwords as described here: <a href="http://maven.apache.org/guides/mini/guide-encryption.html#How_to_create_a_master_password">Password Encryption</a>
- </li>
-
- </ul>
- </li>
- </ul>
- </div>
- </subsection>
- <subsection name="Step1 - Prepare files">
- <ul>
- <li>Switch to the necessary branch:
- <source>
-git checkout BRANCH
- </source>
- </li>
- <li>
- Check that all files:<br />
- LICENSE, NOTICE, DISCLAIMER, CHANGELOG, README<br />
- are up to date and refer to the right version.
- </li>
- <li>
- Update following files in OM documentation:<br/>
- <tt>openmeetings-server/src/site/xdoc/index.xml</tt><br/>
- <tt>openmeetings-server/src/site/xdoc/NewsArchive.xml</tt><br/>
- <tt>openmeetings-server/src/site/xdoc/downloads.xml</tt><br/>
- </li>
- <li>
- Create a TAG of the Git tree that you would like to release<br/>
- Example:
-
- <source>
-git tag 4.0.0RC1
-git push origin 4.0.0RC1
- </source>
- </li>
- <li>
- <p>Get the source from your TAG: </p>
- <source>git checkout $BRANCHORTAG</source>
- <p>$BRANCHORTAG should be replaced with your new TAG</p>
- </li>
- <li>
- <p>Update versions of all modules</p>
- <source>mvn versions:set -DgenerateBackupPoms=false -DnewVersion=3.1.0</source>
- </li>
- <li>Deploy release artifacts to Maven
- <ul>
- <li>
- <source>
-mvn clean
-mvn deploy -Pdeploy,rc
- </source>
- </li>
- </ul>
- </li>
- <li>
- <p>Run the command: </p>
- <source>mvn clean install -P allModules,rc</source>
- </li>
- <li>
- <p>Test building the source on windows and OSx or Linux</p>
- <p>Test running the binary's</p>
- </li>
- <li>
- <p>
- Commit artifacts you have created with KEYS file to the
- <tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt>
- Proposed file structure for "Release Candidate 1" of 3.1.0 will be:
- </p>
- <source>
-3.1.0
-3.1.0/rc1
-3.1.0/rc1/src
-3.1.0/rc1/src/apache-openmeetings-3.1.0-src.zip
-3.1.0/rc1/src/apache-openmeetings-3.1.0-src.tar.gz
-3.1.0/rc1/src/apache-openmeetings-3.1.0-src.zip.sha
-3.1.0/rc1/src/apache-openmeetings-3.1.0-src.zip.asc
-3.1.0/rc1/src/apache-openmeetings-3.1.0-src.tar.gz.sha
-3.1.0/rc1/src/apache-openmeetings-3.1.0-src.tar.gz.asc
-3.1.0/rc1/bin
-3.1.0/rc1/bin/apache-openmeetings-3.1.0.zip
-3.1.0/rc1/bin/apache-openmeetings-3.1.0.tar.gz
-3.1.0/rc1/bin/apache-openmeetings-3.1.0.zip.sha
-3.1.0/rc1/bin/apache-openmeetings-3.1.0.zip.asc
-3.1.0/rc1/bin/apache-openmeetings-3.1.0.tar.gz.sha
-3.1.0/rc1/bin/apache-openmeetings-3.1.0.tar.gz.asc
-3.1.0/rc1/CHANGELOG
-3.1.0/rc1/KEYS
- </source>
- </li>
- </ul>
- </subsection>
-
- <subsection name="Step2 - VOTE and RESULT emails">
- <p>
- Send a "VOTE" to the developer mailing list including links to release artifacts.<br />
- A VOTE always contains two parts:<br />
- Send an email to the developer mailing list with the subject line:<br />
- [VOTE] Apache OpenMeetings x.xx release<br />
- An example for such an email:
- <a href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev/201701.mbox/%3CCAJmbs8jZ7EiXoeBbG4ynvg30FPx2nAOJMypE2Qp-v-c63ayO9A%40mail.gmail.com%3E">example Vote email</a>
- <a href="http://s.apache.org/vote-2.0.0RC4">example Vote email (Incubator)</a>
- <br />
- After the vote is over, send a "RESULT" email to the list with the subject line:<br />
- [RESULT][VOTE] Apache OpenMeetings x.xx release<br />
- An example for such an email:
- <a
- href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev/201701.mbox/%3CCAJmbs8gyvHuarzdVma%2BF6ap7RHBhhVciZp5Oi5JogQdLR6o0NA%40mail.gmail.com%3E">example Result email</a>
- <br />
- Votes on whether a package is ready to be released use majority approval -- i.e., at
- least three PMC members must vote affirmatively for release, and there must be more
- positive than negative votes. Releases may not be vetoed. Before voting +1 PMC members
- are required to download the signed source code package, compile it as provided, and
- test the resulting executable on their own platform, along with also verifying that
- the package meets the requirements of the ASF policy on releases.
- </p>
- </subsection>
-
- <subsection name="Step3 - Sign web start application">
- <p>If VOTEs positive: Sign screen sharing web application and re-pack the release</p>
- <ul>
- <li>Go to the folder you check out your $BRANCHORTAG</li>
- <li>
- <p>Run the command: </p>
- <source>
-cd openmeetings-screenshare
-mvn clean install -Prc,release
- </source>
- </li>
- <li>Go to <a href="https://securesigning.websecurity.symantec.com/csportal/">https://securesigning.websecurity.symantec.com/csportal/</a></li>
- <li>Select "Signing Sets"</li>
- <li>Select "Add signing set"</li>
- <li>Enter "Signing set name" (must include "Apache OpenMeetings" and version) for ex. "Apache OpenMeetings 3.1.0-RELEASE"</li>
- <li>Enter "Version" for ex. "3.1.0-RELEASE"</li>
- <li>Select "Java Signing Sha256" as "Signing service"</li>
- <li>Select "Upload files" and add all <b>jar</b> files from <tt>target/jnlp</tt></li>
- <li>Select "Sign now"</li>
- <li>Select "Type of signing" -> "Production"</li>
- <li>Select "Sign"</li>
- <li>Select "Download set"</li>
- <li>Open binary artifacts of OM created on previous step (both <b>tar.gz</b> and <b>zip</b>)</li>
- <li>Replace jar files inside artifacts <tt>webapps/openmeetings/screenshare</tt> with the signed ones</li>
- <li>
- Re-create artifact signatures
- <p>Create sha256sum checksums</p>
- <source>
-#On OSX you might use this command to make a SHA checksum and store it to a file
-shasum -a 256 -r apache-openmeetings-XXX-src.zip >apache-openmeetings-XXX-src.zip.sha256
- </source>
- <source>
-<![CDATA[
-#To create SHA hashes On Ubuntu:
-for f in `ls -1 *.tar.gz *.zip`; do sha256sum $f > $f.sha256; done
-
-#To check SHA hashes On Ubuntu:
-for f in `ls -1 *.tar.gz *.zip`; do sha256sum -c $f.sha256; done
-]]>
- </source>
- <p>
- Create signatures with the your KEY for every file, the KEY must be available at:<br />
- <a href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD">
- https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD
- </a>
- </p>
- <source>
-<![CDATA[
-#To create signatures On Ubuntu:
-for f in `ls -1 *.tar.gz *.zip`; do gpg --armor --output $f.asc --detach-sig $f; done
-
-#To check signatures On Ubuntu:
-for f in `ls -1 *.tar.gz *.zip`; do gpg --verify $f.asc; done
-]]>
- </source>
- </li>
- </ul>
- <p>NOTE: "Type of signing" can be selected as "Test" to check everything works as expected</p>
-
- </subsection>
-
- <subsection name="Step4 - Distribute and announce">
- <p>If VOTEs positive: Upload the release </p>
- <ul>
- <li>Upload Artifacts with signatures created on the previous steps to
- https://dist.apache.org/repos/dist/release/openmeetings/CURRENT_VERSION
- </li>
- <li>Close staging repo:
- <ul>
- <li>Go to: <a href="https://repository.apache.org/#stagingRepositories">Staging Repositories</a></li>
- <li>Select openmeetings staging repo and Close it with valid message:<br/>
- for ex. "The VOTE about 3.1.2 release was successful"
- </li>
- <li>Select openmeetings staging repo and Release it with valid message:<br/>
- for ex. "The VOTE about 3.1.2 release was successful"
- </li>
- </ul>
- </li>
- <li>
- Wait 24 hours (until all Apache mirrors have synced the packages)
- and send an announcement to the mailing list + blog and any other
- channel.
- </li>
- <li>
- Email announcements should have the subject line:<br />
- [ANNOUNCE] Apache OpenMeetings x.xx released
- </li>
- <li>
- Update release section of DOAP file <tt>openmeetings-site/doap.rdf (https://git-wip-us.apache.org/repos/asf?p=openmeetings-site.git;a=blob;f=doap.rdf;hb=HEAD)</tt>
- </li>
- <li>
- Add a section to <a href="downloads.html">downloads</a> website.<br />
- Make sure that the binary packages are linked using the mirror URL as base path (
- <b>not</b> http://www.apache.org/dist):<br />
- Mirror URL:
- <a href="http://www.apache.org/dyn/closer.lua/openmeetings/">http://www.apache.org/dyn/closer.lua/openmeetings/</a>
- </li>
- <li>
- Release candidates should be deleted from <tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt><br/>
- Old releases should be deleted from <tt>https://dist.apache.org/repos/dist/release/openmeetings/</tt>
- </li>
- </ul>
- </subsection>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Release Guide</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="How to Build a Release of OpenMeetings">
+ <subsection name="Required tools">
+ <div>
+ <p>To build a binary release of OpenMeetings you need: </p>
+ <ul>
+ <li>Sun JDK8</li>
+ <li>Apache Maven 3.3.9</li>
+ <li>
+ SVN Command line client (Subversion 1.7 required!)
+ <a href="http://subversion.apache.org/packages.html" target="_blank" rel="nofollow">http://subversion.apache.org/packages.html</a>
+ </li>
+ <li>A text editor</li>
+ <li>You need to be online! The build process actively downloads needed libraries and dependencies.</li>
+ <li>Valid certficate to be able to enter <a href="https://securesigning.websecurity.symantec.com/csportal/">https://securesigning.websecurity.symantec.com/csportal/</a>
+ Please ask INFRA in case you need one.
+ </li>
+ </ul>
+ </div>
+ </subsection>
+ <subsection name="Prepare your Apache ID">
+ <div>
+ <ul>
+ <li><b>Every release package must be signed with a PGP/GPG key.</b><br />
+ So if you want to release a package your Apache Id must be
+ connected with a PGP key!
+ <br />
+ <br />
+ You might follow:
+ <br />
+ <a
+ href="http://www.apache.org/dev/new-committers-guide.html#security-and-pgp"
+ target="_blank">http://www.apache.org/dev/new-committers-guide.html#security-and-pgp
+ </a>
+ <br />
+ <br />
+ In short:
+ <ul>
+ <li>Create PGP key pairs (private + public) (and I recommend creating a Revoke Cert)</li>
+ <li>Upload the public key (either bei using the PGP Tool that you use
+ to create the key) or by using the web form to:
+ <a href="http://pgp.mit.edu/" target="_blank" rel="nofollow">http://pgp.mit.edu/</a>
+ </li>
+ <li>Add the fingerprint string (something like "BF13 CF11 F9C9 0CBE
+ 4413 09AB 0055 16BF 93A3 0395") to your profile at
+ <a href="https://id.apache.org/" target="_blank" rel="nofollow">https://id.apache.org/</a>
+ </li>
+ <li>
+ Wait for 6-8 hours, the server will search for a public key based
+ on your fingerprint, if success it will create a file with your
+ name at:
+ <br />
+ <a href="https://people.apache.org/keys/committer/">https://people.apache.org/keys/committer/</a>
+ </li>
+ <li>
+ If that is "success" then add your key to:
+ <br />
+ <a href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD">https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD</a>
+ <br />
+ <br />
+ and follow the instructions in the file.
+ </li>
+ </ul>
+ </li>
+ <li><b>Maven</b><br/>
+ <ul>
+ <li>Ensure you able to login to <a href="https://repository.apache.org/">https://repository.apache.org</a></li>
+ <li>
+ Set up development environment as described here: <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">Setup development environment</a><br/>
+ Don't forget to secure passwords as described here: <a href="http://maven.apache.org/guides/mini/guide-encryption.html#How_to_create_a_master_password">Password Encryption</a>
+ </li>
+
+ </ul>
+ </li>
+ </ul>
+ </div>
+ </subsection>
+ <subsection name="Step1 - Prepare files">
+ <ul>
+ <li>Switch to the necessary branch:
+ <source>
+git checkout BRANCH
+ </source>
+ </li>
+ <li>
+ Check that all files:<br />
+ LICENSE, NOTICE, DISCLAIMER, CHANGELOG, README<br />
+ are up to date and refer to the right version.
+ </li>
+ <li>
+ Update following files in OM documentation:<br/>
+ <tt>openmeetings-server/src/site/xdoc/index.xml</tt><br/>
+ <tt>openmeetings-server/src/site/xdoc/NewsArchive.xml</tt><br/>
+ <tt>openmeetings-server/src/site/xdoc/downloads.xml</tt><br/>
+ </li>
+ <li>
+ Create a TAG of the Git tree that you would like to release<br/>
+ Example:
+
+ <source>
+git tag 4.0.0RC1
+git push origin 4.0.0RC1
+ </source>
+ </li>
+ <li>
+ <p>Get the source from your TAG: </p>
+ <source>git checkout $BRANCHORTAG</source>
+ <p>$BRANCHORTAG should be replaced with your new TAG</p>
+ </li>
+ <li>
+ <p>Update versions of all modules</p>
+ <source>mvn versions:set -DgenerateBackupPoms=false -DnewVersion=3.1.0</source>
+ </li>
+ <li>Deploy release artifacts to Maven
+ <ul>
+ <li>
+ <source>
+mvn clean
+mvn deploy -Pdeploy,rc
+ </source>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <p>Run the command: </p>
+ <source>mvn clean install -P allModules,rc</source>
+ </li>
+ <li>
+ <p>Test building the source on windows and OSx or Linux</p>
+ <p>Test running the binary's</p>
+ </li>
+ <li>
+ <p>
+ Commit artifacts you have created with KEYS file to the
+ <tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt>
+ Proposed file structure for "Release Candidate 1" of 3.1.0 will be:
+ </p>
+ <source>
+3.1.0
+3.1.0/rc1
+3.1.0/rc1/src
+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.zip
+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.tar.gz
+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.zip.sha
+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.zip.asc
+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.tar.gz.sha
+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.tar.gz.asc
+3.1.0/rc1/bin
+3.1.0/rc1/bin/apache-openmeetings-3.1.0.zip
+3.1.0/rc1/bin/apache-openmeetings-3.1.0.tar.gz
+3.1.0/rc1/bin/apache-openmeetings-3.1.0.zip.sha
+3.1.0/rc1/bin/apache-openmeetings-3.1.0.zip.asc
+3.1.0/rc1/bin/apache-openmeetings-3.1.0.tar.gz.sha
+3.1.0/rc1/bin/apache-openmeetings-3.1.0.tar.gz.asc
+3.1.0/rc1/CHANGELOG
+3.1.0/rc1/KEYS
+ </source>
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="Step2 - VOTE and RESULT emails">
+ <p>
+ Send a "VOTE" to the developer mailing list including links to release artifacts.<br />
+ A VOTE always contains two parts:<br />
+ Send an email to the developer mailing list with the subject line:<br />
+ [VOTE] Apache OpenMeetings x.xx release<br />
+ An example for such an email:
+ <a href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev/201701.mbox/%3CCAJmbs8jZ7EiXoeBbG4ynvg30FPx2nAOJMypE2Qp-v-c63ayO9A%40mail.gmail.com%3E">example Vote email</a>
+ <a href="http://s.apache.org/vote-2.0.0RC4">example Vote email (Incubator)</a>
+ <br />
+ After the vote is over, send a "RESULT" email to the list with the subject line:<br />
+ [RESULT][VOTE] Apache OpenMeetings x.xx release<br />
+ An example for such an email:
+ <a
+ href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev/201701.mbox/%3CCAJmbs8gyvHuarzdVma%2BF6ap7RHBhhVciZp5Oi5JogQdLR6o0NA%40mail.gmail.com%3E">example Result email</a>
+ <br />
+ Votes on whether a package is ready to be released use majority approval -- i.e., at
+ least three PMC members must vote affirmatively for release, and there must be more
+ positive than negative votes. Releases may not be vetoed. Before voting +1 PMC members
+ are required to download the signed source code package, compile it as provided, and
+ test the resulting executable on their own platform, along with also verifying that
+ the package meets the requirements of the ASF policy on releases.
+ </p>
+ </subsection>
+
+ <subsection name="Step3 - Sign web start application">
+ <p>If VOTEs positive: Sign screen sharing web application and re-pack the release</p>
+ <ul>
+ <li>Go to the folder you check out your $BRANCHORTAG</li>
+ <li>
+ <p>Run the command: </p>
+ <source>
+cd openmeetings-screenshare
+mvn clean install -Prc,release
+ </source>
+ </li>
+ <li>Go to <a href="https://securesigning.websecurity.symantec.com/csportal/">https://securesigning.websecurity.symantec.com/csportal/</a></li>
+ <li>Select "Signing Sets"</li>
+ <li>Select "Add signing set"</li>
+ <li>Enter "Signing set name" (must include "Apache OpenMeetings" and version) for ex. "Apache OpenMeetings 3.1.0-RELEASE"</li>
+ <li>Enter "Version" for ex. "3.1.0-RELEASE"</li>
+ <li>Select "Java Signing Sha256" as "Signing service"</li>
+ <li>Select "Upload files" and add all <b>jar</b> files from <tt>target/jnlp</tt></li>
+ <li>Select "Sign now"</li>
+ <li>Select "Type of signing" -> "Production"</li>
+ <li>Select "Sign"</li>
+ <li>Select "Download set"</li>
+ <li>Open binary artifacts of OM created on previous step (both <b>tar.gz</b> and <b>zip</b>)</li>
+ <li>Replace jar files inside artifacts <tt>webapps/openmeetings/screenshare</tt> with the signed ones</li>
+ <li>
+ Re-create artifact signatures
+ <p>Create sha256sum checksums</p>
+ <source>
+#On OSX you might use this command to make a SHA checksum and store it to a file
+shasum -a 256 -r apache-openmeetings-XXX-src.zip >apache-openmeetings-XXX-src.zip.sha256
+ </source>
+ <source>
+<![CDATA[
+#To create SHA hashes On Ubuntu:
+for f in `ls -1 *.tar.gz *.zip`; do sha256sum $f > $f.sha256; done
+
+#To check SHA hashes On Ubuntu:
+for f in `ls -1 *.tar.gz *.zip`; do sha256sum -c $f.sha256; done
+]]>
+ </source>
+ <p>
+ Create signatures with the your KEY for every file, the KEY must be available at:<br />
+ <a href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD">
+ https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD
+ </a>
+ </p>
+ <source>
+<![CDATA[
+#To create signatures On Ubuntu:
+for f in `ls -1 *.tar.gz *.zip`; do gpg --armor --output $f.asc --detach-sig $f; done
+
+#To check signatures On Ubuntu:
+for f in `ls -1 *.tar.gz *.zip`; do gpg --verify $f.asc; done
+]]>
+ </source>
+ </li>
+ </ul>
+ <p>NOTE: "Type of signing" can be selected as "Test" to check everything works as expected</p>
+
+ </subsection>
+
+ <subsection name="Step4 - Distribute and announce">
+ <p>If VOTEs positive: Upload the release </p>
+ <ul>
+ <li>Upload Artifacts with signatures created on the previous steps to
+ https://dist.apache.org/repos/dist/release/openmeetings/CURRENT_VERSION
+ </li>
+ <li>Close staging repo:
+ <ul>
+ <li>Go to: <a href="https://repository.apache.org/#stagingRepositories">Staging Repositories</a></li>
+ <li>Select openmeetings staging repo and Close it with valid message:<br/>
+ for ex. "The VOTE about 3.1.2 release was successful"
+ </li>
+ <li>Select openmeetings staging repo and Release it with valid message:<br/>
+ for ex. "The VOTE about 3.1.2 release was successful"
+ </li>
+ </ul>
+ </li>
+ <li>
+ Wait 24 hours (until all Apache mirrors have synced the packages)
+ and send an announcement to the mailing list + blog and any other
+ channel.
+ </li>
+ <li>
+ Email announcements should have the subject line:<br />
+ [ANNOUNCE] Apache OpenMeetings x.xx released
+ </li>
+ <li>
+ Update release section of DOAP file <tt>openmeetings-site/doap.rdf (https://git-wip-us.apache.org/repos/asf?p=openmeetings-site.git;a=blob;f=doap.rdf;hb=HEAD)</tt>
+ </li>
+ <li>
+ Add a section to <a href="downloads.html">downloads</a> website.<br />
+ Make sure that the binary packages are linked using the mirror URL as base path (
+ <b>not</b> http://www.apache.org/dist):<br />
+ Mirror URL:
+ <a href="http://www.apache.org/dyn/closer.lua/openmeetings/">http://www.apache.org/dyn/closer.lua/openmeetings/</a>
+ </li>
+ <li>
+ Release candidates should be deleted from <tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt><br/>
+ Old releases should be deleted from <tt>https://dist.apache.org/repos/dist/release/openmeetings/</tt>
+ </li>
+ </ul>
+ </subsection>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/RestAPISample.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/RestAPISample.xml b/openmeetings-server/src/site/xdoc/RestAPISample.xml
index 89710c8..30de9db 100644
--- a/openmeetings-server/src/site/xdoc/RestAPISample.xml
+++ b/openmeetings-server/src/site/xdoc/RestAPISample.xml
@@ -1,139 +1,139 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>REST API sample</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="Introduction">
- <p> For a detailed instruction which services, methods and params are available see the list in the <a href="/openmeetings-webservice/apidocs/index.html" target="_blank">SOAP/REST API</a> .
- ALL methods that are implemented for the SOAP API are also available via REST.
- </p>
- <div>
- you can query methods of each service using following suffixes
-
- <ul>
- <li>SOAP: <tt>?wsdl</tt> suffix, for example <tt>http://localhost:5080/openmeetings/services/UserService?wsdl</tt></li>
- <li>REST: as xml <tt>?_wadl</tt> for example <tt>http://localhost:5080/openmeetings/services/user?_wadl</tt></li>
- <li>REST: as json <tt>?_wadl&type=json</tt> for example <tt>http://localhost:5080/openmeetings/services/user?_wadl&type=json</tt></li>
- </ul>
- <div class="bs-callout bs-callout-info">
- The full list of services with All WSDLs/WADLs is available at following URL: <tt>http://localhost:5080/openmeetings/services/services</tt>
- </div>
- </div>
- </section>
- <section name="How to get room hash via REST">
- <ul>
- <li>
- First of all you need to perform login and get authorized SID to perform authorized operations
- <table>
- <tr>
- <td>Request</td>
- <td>Error response</td>
- <td>Successful response</td>
- </tr>
- <tr>
- <td>
-<source>
-$.ajax({
- method: "GET",
- url: "services/user/login",
- data: {user: 'admin', pass: '12345'},
- dataType: "json"
-});
-</source>
- </td>
- <td>
-<source>
-{
- "serviceResult": {
- "code": -11,
- "type": "ERROR"
- }
-}
-</source>
- </td>
- <td>
-<source>
-{
- "serviceResult": {
- "code": 1,
- "message": "78189aff-d68d-458a-8840-5b18d15a50b0",
- "type": "SUCCESS"
- }
-}
-</source>
- </td>
- </tr>
- </table>
- </li>
- <li>
- In case of error you can get detailed error message in your language as result of following query
- <tt>http://localhost:5080/openmeetings/services/error/<b>ERROR_ID</b>/<b>LANGUAGE_ID</b></tt>
- (for ex. http://localhost:5080/openmeetings/services/error/<b>-11</b>/<b>9</b>)
- </li>
- <li>If your request was successful you will get your SID as <b>message</b> (78189aff-d68d-458a-8840-5b18d15a50b0)</li>
- <li>Then you can use SID to generate room hash
- <table>
- <tr>
- <td>Request</td>
- <td>Successful response</td>
- </tr>
- <tr>
- <td>
-<source>
-$.ajax({
- method: "POST",
- url: "services/user/hash?sid=78189aff-d68d-458a-8840-5b18d15a50b0",
- data: {user: JSON.stringify({
- firstname: 'John',
- lastname: 'Doe',
- externalId: 'uid1',
- externalType: 'myCMS',
- login: 'superjohn'
- }),
- options: JSON.stringify({
- roomId: 5,
- moderator: true,
- showAudioVideoTest: true
- })
- },
- dataType: "json"
-})
-</source>
- </td>
- <td>
-<source>
-{
- "serviceResult": {
- "code": 0,
- "message": "fa1f9381-bd03-42ae-9fd9-332b5f775a1b",
- "type": "SUCCESS"
- }
-}
-</source>
- </td>
- </tr>
- </table>
- </li>
- <li>If your request was successful you will get your hash as <b>message</b> (fa1f9381-bd03-42ae-9fd9-332b5f775a1b)</li>
- <li>Now you can use following URL to enter the room: <tt>http://localhost:5080/openmeetings/hash?secure=fa1f9381-bd03-42ae-9fd9-332b5f775a1b&language=1</tt></li>
- </ul>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>REST API sample</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="Introduction">
+ <p> For a detailed instruction which services, methods and params are available see the list in the <a href="/openmeetings-webservice/apidocs/index.html" target="_blank">SOAP/REST API</a> .
+ ALL methods that are implemented for the SOAP API are also available via REST.
+ </p>
+ <div>
+ you can query methods of each service using following suffixes
+
+ <ul>
+ <li>SOAP: <tt>?wsdl</tt> suffix, for example <tt>http://localhost:5080/openmeetings/services/UserService?wsdl</tt></li>
+ <li>REST: as xml <tt>?_wadl</tt> for example <tt>http://localhost:5080/openmeetings/services/user?_wadl</tt></li>
+ <li>REST: as json <tt>?_wadl&type=json</tt> for example <tt>http://localhost:5080/openmeetings/services/user?_wadl&type=json</tt></li>
+ </ul>
+ <div class="bs-callout bs-callout-info">
+ The full list of services with All WSDLs/WADLs is available at following URL: <tt>http://localhost:5080/openmeetings/services/services</tt>
+ </div>
+ </div>
+ </section>
+ <section name="How to get room hash via REST">
+ <ul>
+ <li>
+ First of all you need to perform login and get authorized SID to perform authorized operations
+ <table>
+ <tr>
+ <td>Request</td>
+ <td>Error response</td>
+ <td>Successful response</td>
+ </tr>
+ <tr>
+ <td>
+<source>
+$.ajax({
+ method: "GET",
+ url: "services/user/login",
+ data: {user: 'admin', pass: '12345'},
+ dataType: "json"
+});
+</source>
+ </td>
+ <td>
+<source>
+{
+ "serviceResult": {
+ "code": -11,
+ "type": "ERROR"
+ }
+}
+</source>
+ </td>
+ <td>
+<source>
+{
+ "serviceResult": {
+ "code": 1,
+ "message": "78189aff-d68d-458a-8840-5b18d15a50b0",
+ "type": "SUCCESS"
+ }
+}
+</source>
+ </td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ In case of error you can get detailed error message in your language as result of following query
+ <tt>http://localhost:5080/openmeetings/services/error/<b>ERROR_ID</b>/<b>LANGUAGE_ID</b></tt>
+ (for ex. http://localhost:5080/openmeetings/services/error/<b>-11</b>/<b>9</b>)
+ </li>
+ <li>If your request was successful you will get your SID as <b>message</b> (78189aff-d68d-458a-8840-5b18d15a50b0)</li>
+ <li>Then you can use SID to generate room hash
+ <table>
+ <tr>
+ <td>Request</td>
+ <td>Successful response</td>
+ </tr>
+ <tr>
+ <td>
+<source>
+$.ajax({
+ method: "POST",
+ url: "services/user/hash?sid=78189aff-d68d-458a-8840-5b18d15a50b0",
+ data: {user: JSON.stringify({
+ firstname: 'John',
+ lastname: 'Doe',
+ externalId: 'uid1',
+ externalType: 'myCMS',
+ login: 'superjohn'
+ }),
+ options: JSON.stringify({
+ roomId: 5,
+ moderator: true,
+ showAudioVideoTest: true
+ })
+ },
+ dataType: "json"
+})
+</source>
+ </td>
+ <td>
+<source>
+{
+ "serviceResult": {
+ "code": 0,
+ "message": "fa1f9381-bd03-42ae-9fd9-332b5f775a1b",
+ "type": "SUCCESS"
+ }
+}
+</source>
+ </td>
+ </tr>
+ </table>
+ </li>
+ <li>If your request was successful you will get your hash as <b>message</b> (fa1f9381-bd03-42ae-9fd9-332b5f775a1b)</li>
+ <li>Now you can use following URL to enter the room: <tt>http://localhost:5080/openmeetings/hash?secure=fa1f9381-bd03-42ae-9fd9-332b5f775a1b&language=1</tt></li>
+ </ul>
+ </section>
+ </body>
+</document>
[18/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/backup/UserConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/UserConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/UserConverter.java
index 0f2edba..696bd8c 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/UserConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/UserConverter.java
@@ -1,55 +1,55 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.backup;
-
-import java.util.Map;
-
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.User;
-import org.simpleframework.xml.stream.InputNode;
-import org.simpleframework.xml.stream.OutputNode;
-
-public class UserConverter extends OmConverter<User> {
- private UserDao userDao;
- private Map<Long, Long> idMap;
-
- public UserConverter() {
- //default constructor is for export
- }
-
- public UserConverter(UserDao userDao, Map<Long, Long> idMap) {
- this.userDao = userDao;
- this.idMap = idMap;
- }
-
- @Override
- public User read(InputNode node) throws Exception {
- long oldId = getLong(node);
- Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
-
- User u = userDao.get(newId);
- return u == null ? new User() : u;
- }
-
- @Override
- public void write(OutputNode node, User value) throws Exception {
- node.setData(true);
- node.setValue(value == null ? "0" : "" + value.getId());
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class UserConverter extends OmConverter<User> {
+ private UserDao userDao;
+ private Map<Long, Long> idMap;
+
+ public UserConverter() {
+ //default constructor is for export
+ }
+
+ public UserConverter(UserDao userDao, Map<Long, Long> idMap) {
+ this.userDao = userDao;
+ this.idMap = idMap;
+ }
+
+ @Override
+ public User read(InputNode node) throws Exception {
+ long oldId = getLong(node);
+ Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
+
+ User u = userDao.get(newId);
+ return u == null ? new User() : u;
+ }
+
+ @Override
+ public void write(OutputNode node, User value) throws Exception {
+ node.setData(true);
+ node.setValue(value == null ? "0" : "" + value.getId());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java
index d91011b..a5b562c 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java
@@ -1,189 +1,189 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.cli;
-
-import java.io.File;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpression;
-import javax.xml.xpath.XPathFactory;
-
-import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.openmeetings.util.ConnectionProperties.DbType;
-import org.apache.openmeetings.util.ConnectionProperties;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-public abstract class ConnectionPropertiesPatcher {
- protected static final String URL_PREFIX = "Url";
- protected static final String DRIVER_PREFIX = "DriverClassName";
- protected static final String USER_PREFIX = "Username";
- protected static final String PASS_PREFIX = "Password";
- protected ConnectionProperties props;
-
- public static ConnectionPropertiesPatcher getPatcher(ConnectionProperties props) {
- ConnectionPropertiesPatcher patcher = null;
- switch (props.getDbType()) {
- case db2:
- patcher = new Db2Patcher();
- break;
- case mssql:
- patcher = new MssqlPatcher();
- break;
- case mysql:
- patcher = new MysqlPatcher();
- break;
- case oracle:
- patcher = new OraclePatcher();
- break;
- case postgresql:
- patcher = new PostgresPatcher();
- break;
- case derby:
- default:
- patcher = new DerbyPatcher();
- break;
- }
- patcher.props = props;
- return patcher;
- }
-
- public static ConnectionProperties getConnectionProperties(File conf) throws Exception {
- ConnectionProperties props = new ConnectionProperties();
- Document doc = getDocument(conf);
- Attr attr = getConnectionProperties(doc);
- String[] tokens = attr.getValue().split(",");
- loadProperties(tokens, props);
-
- return props;
- }
-
- private static Document getDocument(File xml) throws Exception {
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- //dbFactory.setNamespaceAware(true);
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- return dBuilder.parse(xml);
- }
-
- private static Attr getConnectionProperties(Document doc) throws Exception {
- XPath xPath = XPathFactory.newInstance().newXPath();
- XPathExpression expr = xPath.compile("/persistence/persistence-unit/properties/property[@name='openjpa.ConnectionProperties']");
-
- Element element = (Element)expr.evaluate(doc, XPathConstants.NODE);
- return element.getAttributeNode("value");
- }
-
- public static void patch(ConnectionProperties props) throws Exception {
- ConnectionPropertiesPatcher patcher = getPatcher(props);
- Document doc = getDocument(OmFileHelper.getPersistence(props.getDbType()));
- Attr attr = getConnectionProperties(doc);
- String[] tokens = attr.getValue().split(",");
- patcher.patchAttribute(tokens);
- attr.setValue(StringUtils.join(tokens, ","));
-
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Transformer transformer = transformerFactory.newTransformer();
- DOMSource source = new DOMSource(doc);
- transformer.transform(source, new StreamResult(OmFileHelper.getPersistence().getCanonicalPath())); //this constructor is used to avoid transforming path to URI
- }
-
- public static ConnectionProperties patch(String dbType, String host, String port, String db, String user, String pass) throws Exception {
- ConnectionProperties props = getConnectionProperties(OmFileHelper.getPersistence(dbType));
- props.setLogin(user);
- props.setPassword(pass);
- ConnectionPropertiesPatcher patcher = getPatcher(props);
- props.setURL(patcher.getUrl(props.getURL(), host, port, db));
- patch(props);
- return props;
- }
-
- public static void updateUrl(ConnectionProperties props, String host, String port, String db) {
- ConnectionPropertiesPatcher patcher = getPatcher(props);
- props.setURL(patcher.getUrl(props.getURL(), host, port, db));
- }
-
- protected void patchAttribute(String[] tokens) {
- for (int i = 0; i < tokens.length; ++i) {
- patchProp(tokens, i, USER_PREFIX, props.getLogin());
- patchProp(tokens, i, PASS_PREFIX, props.getPassword() == null ? "" : props.getPassword());
- patchProp(tokens, i, URL_PREFIX, props.getURL());
- }
- }
-
- protected static void patchProp(String[] tokens, int idx, String name, String value) {
- String prop = tokens[idx].trim();
- if (prop.startsWith(name)) {
- prop = name + "=" + StringEscapeUtils.escapeXml10(value);
- tokens[idx] = prop;
- }
- }
-
- private static void loadProperties(String[] tokens, ConnectionProperties connectionProperties) {
- String prop;
- for (int i = 0; i < tokens.length; ++i) {
- prop = getPropFromPersistence(tokens, i, DRIVER_PREFIX);
- if (prop != null) {
- connectionProperties.setDriver(prop);
- }
-
- prop = getPropFromPersistence(tokens, i, USER_PREFIX);
- if (prop != null) {
- connectionProperties.setLogin(prop);
- }
-
- prop = getPropFromPersistence(tokens, i, PASS_PREFIX);
- if (prop != null) {
- connectionProperties.setPassword(prop);
- }
-
- prop = getPropFromPersistence(tokens, i, URL_PREFIX);
- if (prop != null) {
- try {
- //will try to "guess" dbType
- String[] parts = prop.split(":");
- connectionProperties.setDbType("sqlserver".equals(parts[1]) ? DbType.mssql : DbType.valueOf(parts[1]));
- } catch (Exception e) {
- //ignore
- }
- connectionProperties.setURL(prop);
- }
- }
- }
-
- protected static String getPropFromPersistence(String[] tokens, int idx, String name){
- String prop = tokens[idx].trim();
- if (prop.startsWith(name)) {
- //From "Username=root" getting only "root"
- return prop.substring(prop.indexOf("=") + 1);
- }
- return null;
- }
-
- protected abstract String getUrl(String url, String host, String port, String db);
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.File;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathFactory;
+
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.openmeetings.util.ConnectionProperties.DbType;
+import org.apache.openmeetings.util.ConnectionProperties;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public abstract class ConnectionPropertiesPatcher {
+ protected static final String URL_PREFIX = "Url";
+ protected static final String DRIVER_PREFIX = "DriverClassName";
+ protected static final String USER_PREFIX = "Username";
+ protected static final String PASS_PREFIX = "Password";
+ protected ConnectionProperties props;
+
+ public static ConnectionPropertiesPatcher getPatcher(ConnectionProperties props) {
+ ConnectionPropertiesPatcher patcher = null;
+ switch (props.getDbType()) {
+ case db2:
+ patcher = new Db2Patcher();
+ break;
+ case mssql:
+ patcher = new MssqlPatcher();
+ break;
+ case mysql:
+ patcher = new MysqlPatcher();
+ break;
+ case oracle:
+ patcher = new OraclePatcher();
+ break;
+ case postgresql:
+ patcher = new PostgresPatcher();
+ break;
+ case derby:
+ default:
+ patcher = new DerbyPatcher();
+ break;
+ }
+ patcher.props = props;
+ return patcher;
+ }
+
+ public static ConnectionProperties getConnectionProperties(File conf) throws Exception {
+ ConnectionProperties props = new ConnectionProperties();
+ Document doc = getDocument(conf);
+ Attr attr = getConnectionProperties(doc);
+ String[] tokens = attr.getValue().split(",");
+ loadProperties(tokens, props);
+
+ return props;
+ }
+
+ private static Document getDocument(File xml) throws Exception {
+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+ //dbFactory.setNamespaceAware(true);
+ DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+ return dBuilder.parse(xml);
+ }
+
+ private static Attr getConnectionProperties(Document doc) throws Exception {
+ XPath xPath = XPathFactory.newInstance().newXPath();
+ XPathExpression expr = xPath.compile("/persistence/persistence-unit/properties/property[@name='openjpa.ConnectionProperties']");
+
+ Element element = (Element)expr.evaluate(doc, XPathConstants.NODE);
+ return element.getAttributeNode("value");
+ }
+
+ public static void patch(ConnectionProperties props) throws Exception {
+ ConnectionPropertiesPatcher patcher = getPatcher(props);
+ Document doc = getDocument(OmFileHelper.getPersistence(props.getDbType()));
+ Attr attr = getConnectionProperties(doc);
+ String[] tokens = attr.getValue().split(",");
+ patcher.patchAttribute(tokens);
+ attr.setValue(StringUtils.join(tokens, ","));
+
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ DOMSource source = new DOMSource(doc);
+ transformer.transform(source, new StreamResult(OmFileHelper.getPersistence().getCanonicalPath())); //this constructor is used to avoid transforming path to URI
+ }
+
+ public static ConnectionProperties patch(String dbType, String host, String port, String db, String user, String pass) throws Exception {
+ ConnectionProperties props = getConnectionProperties(OmFileHelper.getPersistence(dbType));
+ props.setLogin(user);
+ props.setPassword(pass);
+ ConnectionPropertiesPatcher patcher = getPatcher(props);
+ props.setURL(patcher.getUrl(props.getURL(), host, port, db));
+ patch(props);
+ return props;
+ }
+
+ public static void updateUrl(ConnectionProperties props, String host, String port, String db) {
+ ConnectionPropertiesPatcher patcher = getPatcher(props);
+ props.setURL(patcher.getUrl(props.getURL(), host, port, db));
+ }
+
+ protected void patchAttribute(String[] tokens) {
+ for (int i = 0; i < tokens.length; ++i) {
+ patchProp(tokens, i, USER_PREFIX, props.getLogin());
+ patchProp(tokens, i, PASS_PREFIX, props.getPassword() == null ? "" : props.getPassword());
+ patchProp(tokens, i, URL_PREFIX, props.getURL());
+ }
+ }
+
+ protected static void patchProp(String[] tokens, int idx, String name, String value) {
+ String prop = tokens[idx].trim();
+ if (prop.startsWith(name)) {
+ prop = name + "=" + StringEscapeUtils.escapeXml10(value);
+ tokens[idx] = prop;
+ }
+ }
+
+ private static void loadProperties(String[] tokens, ConnectionProperties connectionProperties) {
+ String prop;
+ for (int i = 0; i < tokens.length; ++i) {
+ prop = getPropFromPersistence(tokens, i, DRIVER_PREFIX);
+ if (prop != null) {
+ connectionProperties.setDriver(prop);
+ }
+
+ prop = getPropFromPersistence(tokens, i, USER_PREFIX);
+ if (prop != null) {
+ connectionProperties.setLogin(prop);
+ }
+
+ prop = getPropFromPersistence(tokens, i, PASS_PREFIX);
+ if (prop != null) {
+ connectionProperties.setPassword(prop);
+ }
+
+ prop = getPropFromPersistence(tokens, i, URL_PREFIX);
+ if (prop != null) {
+ try {
+ //will try to "guess" dbType
+ String[] parts = prop.split(":");
+ connectionProperties.setDbType("sqlserver".equals(parts[1]) ? DbType.mssql : DbType.valueOf(parts[1]));
+ } catch (Exception e) {
+ //ignore
+ }
+ connectionProperties.setURL(prop);
+ }
+ }
+ }
+
+ protected static String getPropFromPersistence(String[] tokens, int idx, String name){
+ String prop = tokens[idx].trim();
+ if (prop.startsWith(name)) {
+ //From "Username=root" getting only "root"
+ return prop.substring(prop.indexOf("=") + 1);
+ }
+ return null;
+ }
+
+ protected abstract String getUrl(String url, String host, String port, String db);
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Db2Patcher.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Db2Patcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Db2Patcher.java
index b681979..2103db1 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Db2Patcher.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Db2Patcher.java
@@ -1,28 +1,28 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.cli;
-
-public class Db2Patcher extends ConnectionPropertiesPatcher {
- @Override
- protected String getUrl(String _url, String host, String _port, String _db) {
- String port = (_port == null) ? "50000" : _port;
- String db = (_db == null) ? "openmeet" : _db;
- return "jdbc:db2://" + host + ":" + port + "/" + db;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class Db2Patcher extends ConnectionPropertiesPatcher {
+ @Override
+ protected String getUrl(String _url, String host, String _port, String _db) {
+ String port = (_port == null) ? "50000" : _port;
+ String db = (_db == null) ? "openmeet" : _db;
+ return "jdbc:db2://" + host + ":" + port + "/" + db;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java
index ff5498e..ea55963 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java
@@ -1,33 +1,33 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.cli;
-
-public class DerbyPatcher extends ConnectionPropertiesPatcher {
- @Override
- protected String getUrl(String _url, String host, String _port, String _db) {
- String db = (_db == null) ? "openmeetings" : _db;
- String suffix = _url.substring(_url.indexOf(';'));
-
- if (host != null && _port != null) {
- //return "jdbc:derby" + "://" + host + ":" + _port + "/" + db + suffix;
- }
-
- return "jdbc:derby" + ":" + db + suffix;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class DerbyPatcher extends ConnectionPropertiesPatcher {
+ @Override
+ protected String getUrl(String _url, String host, String _port, String _db) {
+ String db = (_db == null) ? "openmeetings" : _db;
+ String suffix = _url.substring(_url.indexOf(';'));
+
+ if (host != null && _port != null) {
+ //return "jdbc:derby" + "://" + host + ":" + _port + "/" + db + suffix;
+ }
+
+ return "jdbc:derby" + ":" + db + suffix;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java
index 681331d..2bd04a8 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java
@@ -1,28 +1,28 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.cli;
-
-public class MssqlPatcher extends ConnectionPropertiesPatcher {
- @Override
- protected String getUrl(String _url, String host, String _port, String _db) {
- String port = (_port == null) ? "1433" : _port;
- String db = (_db == null) ? "openmeetings" : _db;
- return "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + db;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class MssqlPatcher extends ConnectionPropertiesPatcher {
+ @Override
+ protected String getUrl(String _url, String host, String _port, String _db) {
+ String port = (_port == null) ? "1433" : _port;
+ String db = (_db == null) ? "openmeetings" : _db;
+ return "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + db;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java
index 163e710..2a3c7d4 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java
@@ -1,29 +1,29 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.cli;
-
-public class MysqlPatcher extends ConnectionPropertiesPatcher {
- @Override
- protected String getUrl(String _url, String host, String _port, String _db) {
- String port = (_port == null) ? "3306" : _port;
- String db = (_db == null) ? "openmeetings" : _db;
- String suffix = _url.substring(_url.indexOf('?'));
- return "jdbc:mysql://" + host + ":" + port + "/" + db + suffix;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class MysqlPatcher extends ConnectionPropertiesPatcher {
+ @Override
+ protected String getUrl(String _url, String host, String _port, String _db) {
+ String port = (_port == null) ? "3306" : _port;
+ String db = (_db == null) ? "openmeetings" : _db;
+ String suffix = _url.substring(_url.indexOf('?'));
+ return "jdbc:mysql://" + host + ":" + port + "/" + db + suffix;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java
index c9a04a9..bb2db07 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java
@@ -1,32 +1,32 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.cli;
-
-public class OraclePatcher extends ConnectionPropertiesPatcher {
- @Override
- protected String getUrl(String _url, String host, String _port, String _db) {
- String port = (_port == null) ? "1521" : _port;
- String db = (_db == null) ? "openmeetings" : _db;
- String delim = ":";
- if (db.startsWith("/")) {
- delim = "";
- }
- return String.format("jdbc:oracle:thin:@%s:%s%s%s", host, port, delim, db);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class OraclePatcher extends ConnectionPropertiesPatcher {
+ @Override
+ protected String getUrl(String _url, String host, String _port, String _db) {
+ String port = (_port == null) ? "1521" : _port;
+ String db = (_db == null) ? "openmeetings" : _db;
+ String delim = ":";
+ if (db.startsWith("/")) {
+ delim = "";
+ }
+ return String.format("jdbc:oracle:thin:@%s:%s%s%s", host, port, delim, db);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java
index e1b885c..975f6dc 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java
@@ -1,28 +1,28 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.cli;
-
-public class PostgresPatcher extends ConnectionPropertiesPatcher {
- @Override
- protected String getUrl(String _url, String host, String _port, String _db) {
- String port = (_port == null) ? "5432" : _port;
- String db = (_db == null) ? "openmeetings" : _db;
- return "jdbc:postgresql://" + host + ":" + port + "/" + db;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class PostgresPatcher extends ConnectionPropertiesPatcher {
+ @Override
+ protected String getUrl(String _url, String host, String _port, String _db) {
+ String port = (_port == null) ? "5432" : _port;
+ String db = (_db == null) ? "openmeetings" : _db;
+ return "jdbc:postgresql://" + host + ":" + port + "/" + db;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
index 5e1f297..7fbf8ac 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
@@ -1,100 +1,100 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.installation;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_BASE_URL;
-
-import java.io.Serializable;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.util.crypt.SHA256Implementation;
-
-public class InstallationConfig implements Serializable {
- private static final long serialVersionUID = 1L;
-
- public String appName = ConfigurationDao.DEFAULT_APP_NAME;
- public String username;
- private String password;
- public String email;
- public String group;
- public String allowFrontendRegister = "1";
- public String createDefaultRooms = "1";
- public String ical_timeZone = "Europe/Berlin";
-
- public String cryptClassName = SHA256Implementation.class.getCanonicalName();
- //email
- public Integer smtpPort = 25;
- public String smtpServer = "localhost";
- public String mailAuthName = "";
- public String mailAuthPass = "";
- public String mailReferer = "noreply@openmeetings.apache.org";
- public String mailUseTls = "0";
- //paths
- public Integer swfZoom = 100;
- public Integer swfJpegQuality = 85;
- public String swfPath = "";
- public String imageMagicPath = "";
- public String ffmpegPath = "";
- public String soxPath = "";
- public String officePath = "";
-
- public String defaultLangId = "1";
- public String sendEmailAtRegister = "0";
- public String urlFeed = "http://mail-archives.apache.org/mod_mbox/openmeetings-user/?format=atom";
- public String urlFeed2 = "http://mail-archives.apache.org/mod_mbox/openmeetings-dev/?format=atom";
- public String sendEmailWithVerficationCode = "0";
- public String defaultExportFont = "TimesNewRoman";
- public String red5SipEnable = "no";
- public String red5SipRoomPrefix = "400";
- public String red5SipExtenContext = "rooms";
- public String replyToOrganizer = "1";
- public String baseUrl = DEFAULT_BASE_URL;
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- @Override
- public String toString() {
- return "InstallationConfig [allowFrontendRegister="
- + allowFrontendRegister + ", createDefaultRooms="
- + createDefaultRooms + ", cryptClassName=" + cryptClassName
- + ", smtpPort=" + smtpPort + ", smtpServer=" + smtpServer
- + ", mailAuthName=" + mailAuthName + ", mailAuthPass="
- + mailAuthPass + ", mailReferer=" + mailReferer
- + ", mailUseTls=" + mailUseTls + ", swfZoom=" + swfZoom
- + ", swfJpegQuality=" + swfJpegQuality + ", swfPath=" + swfPath
- + ", imageMagicPath=" + imageMagicPath + ", ffmpegPath="
- + ffmpegPath + ", soxPath=" + soxPath
- + ", defaultLangId=" + defaultLangId + ", sendEmailAtRegister="
- + sendEmailAtRegister + ", urlFeed=" + urlFeed + ", urlFeed2="
- + urlFeed2 + ", sendEmailWithVerficationCode="
- + sendEmailWithVerficationCode + ", defaultExportFont="
- + defaultExportFont + ", red5SipEnable="
- + red5SipEnable + ", red5SipRoomPrefix=" + red5SipRoomPrefix
- + ", red5SipExtenContext=" + red5SipExtenContext
- + ", replyToOrganizer=" + replyToOrganizer
- + ", ical_timeZone=" + ical_timeZone
- + "]";
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.installation;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_BASE_URL;
+
+import java.io.Serializable;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.crypt.SHA256Implementation;
+
+public class InstallationConfig implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ public String appName = ConfigurationDao.DEFAULT_APP_NAME;
+ public String username;
+ private String password;
+ public String email;
+ public String group;
+ public String allowFrontendRegister = "1";
+ public String createDefaultRooms = "1";
+ public String ical_timeZone = "Europe/Berlin";
+
+ public String cryptClassName = SHA256Implementation.class.getCanonicalName();
+ //email
+ public Integer smtpPort = 25;
+ public String smtpServer = "localhost";
+ public String mailAuthName = "";
+ public String mailAuthPass = "";
+ public String mailReferer = "noreply@openmeetings.apache.org";
+ public String mailUseTls = "0";
+ //paths
+ public Integer swfZoom = 100;
+ public Integer swfJpegQuality = 85;
+ public String swfPath = "";
+ public String imageMagicPath = "";
+ public String ffmpegPath = "";
+ public String soxPath = "";
+ public String officePath = "";
+
+ public String defaultLangId = "1";
+ public String sendEmailAtRegister = "0";
+ public String urlFeed = "http://mail-archives.apache.org/mod_mbox/openmeetings-user/?format=atom";
+ public String urlFeed2 = "http://mail-archives.apache.org/mod_mbox/openmeetings-dev/?format=atom";
+ public String sendEmailWithVerficationCode = "0";
+ public String defaultExportFont = "TimesNewRoman";
+ public String red5SipEnable = "no";
+ public String red5SipRoomPrefix = "400";
+ public String red5SipExtenContext = "rooms";
+ public String replyToOrganizer = "1";
+ public String baseUrl = DEFAULT_BASE_URL;
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ @Override
+ public String toString() {
+ return "InstallationConfig [allowFrontendRegister="
+ + allowFrontendRegister + ", createDefaultRooms="
+ + createDefaultRooms + ", cryptClassName=" + cryptClassName
+ + ", smtpPort=" + smtpPort + ", smtpServer=" + smtpServer
+ + ", mailAuthName=" + mailAuthName + ", mailAuthPass="
+ + mailAuthPass + ", mailReferer=" + mailReferer
+ + ", mailUseTls=" + mailUseTls + ", swfZoom=" + swfZoom
+ + ", swfJpegQuality=" + swfJpegQuality + ", swfPath=" + swfPath
+ + ", imageMagicPath=" + imageMagicPath + ", ffmpegPath="
+ + ffmpegPath + ", soxPath=" + soxPath
+ + ", defaultLangId=" + defaultLangId + ", sendEmailAtRegister="
+ + sendEmailAtRegister + ", urlFeed=" + urlFeed + ", urlFeed2="
+ + urlFeed2 + ", sendEmailWithVerficationCode="
+ + sendEmailWithVerficationCode + ", defaultExportFont="
+ + defaultExportFont + ", red5SipEnable="
+ + red5SipEnable + ", red5SipRoomPrefix=" + red5SipRoomPrefix
+ + ", red5SipExtenContext=" + red5SipExtenContext
+ + ", replyToOrganizer=" + replyToOrganizer
+ + ", ical_timeZone=" + ical_timeZone
+ + "]";
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-install/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/site/site.xml b/openmeetings-install/src/site/site.xml
index b7a0eae..dd3dc53 100644
--- a/openmeetings-install/src/site/site.xml
+++ b/openmeetings-install/src/site/site.xml
@@ -1,39 +1,39 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu ref="parent"/>
- <menu name="Project">
- <item name="About" href="/index.html" />
- <item name="Info" href="/project-info.html" />
- <item name="Summary" href="/project-summary.html" />
- <item name="License" href="/license.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Dependency Convergence" href="/dependency-convergence.html" />
- <item name="RAT Report" href="/rat-report.html" />
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <bottomNav maxSpan="12">
- <column>Parent Project</column>
- <column>Project</column>
- </bottomNav>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu ref="parent"/>
+ <menu name="Project">
+ <item name="About" href="/index.html" />
+ <item name="Info" href="/project-info.html" />
+ <item name="Summary" href="/project-summary.html" />
+ <item name="License" href="/license.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Dependency Convergence" href="/dependency-convergence.html" />
+ <item name="RAT Report" href="/rat-report.html" />
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <bottomNav maxSpan="12">
+ <column>Parent Project</column>
+ <column>Project</column>
+ </bottomNav>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java
index d17d56b..0ce3502 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java
@@ -1,237 +1,237 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.screenshare;
-
-import static org.apache.openmeetings.screenshare.Core.QUARTZ_GROUP_NAME;
-import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.FPS;
-import static org.apache.openmeetings.screenshare.util.Util.getQurtzProps;
-import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.Queue;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.openmeetings.screenshare.job.CursorJob;
-import org.apache.openmeetings.screenshare.job.EncodeJob;
-import org.apache.openmeetings.screenshare.job.SendJob;
-import org.quartz.JobBuilder;
-import org.quartz.JobDetail;
-import org.quartz.JobKey;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.SchedulerFactory;
-import org.quartz.Trigger;
-import org.quartz.TriggerBuilder;
-import org.quartz.impl.StdSchedulerFactory;
-import org.red5.server.api.Red5;
-import org.red5.server.net.rtmp.event.VideoData;
-import org.red5.server.stream.message.RTMPMessage;
-import org.slf4j.Logger;
-
-public class CaptureScreen extends Thread {
- private static final Logger log = getLogger(CaptureScreen.class);
- private final static String QUARTZ_CURSOR_TRIGGER_NAME = "CursorTrigger";
- private final static String QUARTZ_CURSOR_JOB_NAME = "CursorJob";
- private Core core;
- private int timestampDelta;
- private volatile AtomicInteger timestamp = new AtomicInteger(0);
- private volatile AtomicBoolean sendFrameGuard = new AtomicBoolean(false);
- private long startTime = 0;
- private volatile boolean active = true;
- private IScreenEncoder se;
- private IScreenShare client;
- private Queue<VideoData> frames = new ArrayBlockingQueue<>(2);
- private String host = null;
- private String app = null;
- private int port = -1;
- private Number streamId;
- private boolean startPublish = false;
- private Scheduler _scheduler;
-
- public CaptureScreen(Core coreScreenShare, IScreenShare client, String host, String app, int port) {
- core = coreScreenShare;
- this.client = client;
- this.host = host;
- this.app = app;
- this.port = port;
- }
-
- private Scheduler getScheduler() {
- if (_scheduler == null) {
- try {
- SchedulerFactory schdlrFactory = new StdSchedulerFactory(getQurtzProps("CaptureScreen"));
- _scheduler = schdlrFactory.getScheduler();
- } catch (SchedulerException e) {
- log.error("Unexpected error while creating scheduler", e);
- }
- }
- return _scheduler;
- }
-
- public void release() {
- try {
- if (_scheduler != null) {
- _scheduler.shutdown(true);
- _scheduler = null;
- }
- } catch (Exception e) {
- log.error("Unexpected error while shutting down scheduler", e);
- }
- active = false;
- timestamp = new AtomicInteger(0);
- startTime = 0;
- }
-
- @Override
- public void run() {
- try {
- while (active && !core.isReadyToRecord()) {
- Thread.sleep(60);
- }
-
- timestampDelta = 1000 / FPS;
- se = new ScreenV1Encoder(3 * FPS); //send keyframe every 3 seconds
- startTime = System.currentTimeMillis();
-
- JobDetail encodeJob = JobBuilder.newJob(EncodeJob.class).withIdentity("EncodeJob", QUARTZ_GROUP_NAME).build();
- encodeJob.getJobDataMap().put(EncodeJob.CAPTURE_KEY, this);
- Trigger encodeTrigger = TriggerBuilder.newTrigger()
- .withIdentity("EncodeTrigger", QUARTZ_GROUP_NAME)
- .withSchedule(simpleSchedule().withIntervalInMilliseconds(timestampDelta).repeatForever())
- .build();
- JobDetail sendJob = JobBuilder.newJob(SendJob.class).withIdentity("SendJob", QUARTZ_GROUP_NAME).build();
- Trigger sendTrigger = TriggerBuilder.newTrigger()
- .withIdentity("SendTrigger", QUARTZ_GROUP_NAME)
- .withSchedule(simpleSchedule().withIntervalInMilliseconds(timestampDelta).repeatForever())
- .build();
- sendJob.getJobDataMap().put(SendJob.CAPTURE_KEY, this);
-
- Scheduler s = getScheduler();
- s.scheduleJob(encodeJob, encodeTrigger);
- s.scheduleJob(sendJob, sendTrigger);
- s.start();
- } catch (Exception e) {
- log.error("Error while running: ", e);
- }
- }
-
- /*
- private void pushAudio(byte[] audio, long ts) {
- if (startPublish) {
- buffer.put((byte) 6);
- buffer.put(audio);
- buffer.flip();
-
- // I can stream audio
- //packets successfully using linear PCM at 11025Hz. For those packets I
- //push one byte (0x06) which specifies the format of audio data in a
- //ByteBuffer, and then real audio data:
- RTMPMessage rtmpMsg = RTMPMessage.build(new AudioData(buffer), (int) ts);
- client.publishStreamData(streamId, rtmpMsg);
- }
- }
- */
-
- public void pushVideo(VideoData data, int ts) {
- if (startPublish) {
- if (Red5.getConnectionLocal() == null) {
- Red5.setConnectionLocal(client.getConnection());
- }
- RTMPMessage rtmpMsg = RTMPMessage.build(data, ts);
- client.publishStreamData(streamId, rtmpMsg);
- }
- }
-
- public String getHost() {
- return host;
- }
-
- public String getApp() {
- return app;
- }
-
- public int getPort() {
- return port;
- }
-
- public Number getStreamId() {
- return streamId;
- }
-
- public void setStreamId(Number streamId) {
- this.streamId = streamId;
- }
-
- public void setStartPublish(boolean startPublish) {
- this.startPublish = startPublish;
- }
-
- public IScreenEncoder getEncoder() {
- return se;
- }
-
- public Queue<VideoData> getFrames() {
- return frames;
- }
-
- public void setSendFrameGuard(boolean b) {
- sendFrameGuard.set(b);
- }
-
- public boolean getSendFrameGuard() {
- return sendFrameGuard.get();
- }
-
- public AtomicInteger getTimestamp() {
- return timestamp;
- }
-
- public long getStartTime() {
- return startTime;
- }
-
- public int getTimestampDelta() {
- return timestampDelta;
- }
-
- public void sendCursorStatus() {
- core.sendCursorStatus();
- }
-
- public void setSendCursor(boolean sendCursor) {
- try {
- Scheduler s = getScheduler();
- if (sendCursor) {
- JobDetail cursorJob = JobBuilder.newJob(CursorJob.class).withIdentity(QUARTZ_CURSOR_JOB_NAME, QUARTZ_GROUP_NAME).build();
- Trigger cursorTrigger = TriggerBuilder.newTrigger()
- .withIdentity(QUARTZ_CURSOR_TRIGGER_NAME, QUARTZ_GROUP_NAME)
- .withSchedule(simpleSchedule().withIntervalInMilliseconds(1000 / Math.min(5, FPS)).repeatForever())
- .build();
- cursorJob.getJobDataMap().put(CursorJob.CAPTURE_KEY, this);
- s.scheduleJob(cursorJob, cursorTrigger);
- } else {
- s.deleteJob(JobKey.jobKey(QUARTZ_CURSOR_JOB_NAME, QUARTZ_GROUP_NAME));
- }
- } catch (SchedulerException e) {
- log.error("Unexpected Error schedule/unschedule cursor job", e);
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.screenshare;
+
+import static org.apache.openmeetings.screenshare.Core.QUARTZ_GROUP_NAME;
+import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.FPS;
+import static org.apache.openmeetings.screenshare.util.Util.getQurtzProps;
+import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
+import static org.slf4j.LoggerFactory.getLogger;
+
+import java.util.Queue;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.openmeetings.screenshare.job.CursorJob;
+import org.apache.openmeetings.screenshare.job.EncodeJob;
+import org.apache.openmeetings.screenshare.job.SendJob;
+import org.quartz.JobBuilder;
+import org.quartz.JobDetail;
+import org.quartz.JobKey;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SchedulerFactory;
+import org.quartz.Trigger;
+import org.quartz.TriggerBuilder;
+import org.quartz.impl.StdSchedulerFactory;
+import org.red5.server.api.Red5;
+import org.red5.server.net.rtmp.event.VideoData;
+import org.red5.server.stream.message.RTMPMessage;
+import org.slf4j.Logger;
+
+public class CaptureScreen extends Thread {
+ private static final Logger log = getLogger(CaptureScreen.class);
+ private final static String QUARTZ_CURSOR_TRIGGER_NAME = "CursorTrigger";
+ private final static String QUARTZ_CURSOR_JOB_NAME = "CursorJob";
+ private Core core;
+ private int timestampDelta;
+ private volatile AtomicInteger timestamp = new AtomicInteger(0);
+ private volatile AtomicBoolean sendFrameGuard = new AtomicBoolean(false);
+ private long startTime = 0;
+ private volatile boolean active = true;
+ private IScreenEncoder se;
+ private IScreenShare client;
+ private Queue<VideoData> frames = new ArrayBlockingQueue<>(2);
+ private String host = null;
+ private String app = null;
+ private int port = -1;
+ private Number streamId;
+ private boolean startPublish = false;
+ private Scheduler _scheduler;
+
+ public CaptureScreen(Core coreScreenShare, IScreenShare client, String host, String app, int port) {
+ core = coreScreenShare;
+ this.client = client;
+ this.host = host;
+ this.app = app;
+ this.port = port;
+ }
+
+ private Scheduler getScheduler() {
+ if (_scheduler == null) {
+ try {
+ SchedulerFactory schdlrFactory = new StdSchedulerFactory(getQurtzProps("CaptureScreen"));
+ _scheduler = schdlrFactory.getScheduler();
+ } catch (SchedulerException e) {
+ log.error("Unexpected error while creating scheduler", e);
+ }
+ }
+ return _scheduler;
+ }
+
+ public void release() {
+ try {
+ if (_scheduler != null) {
+ _scheduler.shutdown(true);
+ _scheduler = null;
+ }
+ } catch (Exception e) {
+ log.error("Unexpected error while shutting down scheduler", e);
+ }
+ active = false;
+ timestamp = new AtomicInteger(0);
+ startTime = 0;
+ }
+
+ @Override
+ public void run() {
+ try {
+ while (active && !core.isReadyToRecord()) {
+ Thread.sleep(60);
+ }
+
+ timestampDelta = 1000 / FPS;
+ se = new ScreenV1Encoder(3 * FPS); //send keyframe every 3 seconds
+ startTime = System.currentTimeMillis();
+
+ JobDetail encodeJob = JobBuilder.newJob(EncodeJob.class).withIdentity("EncodeJob", QUARTZ_GROUP_NAME).build();
+ encodeJob.getJobDataMap().put(EncodeJob.CAPTURE_KEY, this);
+ Trigger encodeTrigger = TriggerBuilder.newTrigger()
+ .withIdentity("EncodeTrigger", QUARTZ_GROUP_NAME)
+ .withSchedule(simpleSchedule().withIntervalInMilliseconds(timestampDelta).repeatForever())
+ .build();
+ JobDetail sendJob = JobBuilder.newJob(SendJob.class).withIdentity("SendJob", QUARTZ_GROUP_NAME).build();
+ Trigger sendTrigger = TriggerBuilder.newTrigger()
+ .withIdentity("SendTrigger", QUARTZ_GROUP_NAME)
+ .withSchedule(simpleSchedule().withIntervalInMilliseconds(timestampDelta).repeatForever())
+ .build();
+ sendJob.getJobDataMap().put(SendJob.CAPTURE_KEY, this);
+
+ Scheduler s = getScheduler();
+ s.scheduleJob(encodeJob, encodeTrigger);
+ s.scheduleJob(sendJob, sendTrigger);
+ s.start();
+ } catch (Exception e) {
+ log.error("Error while running: ", e);
+ }
+ }
+
+ /*
+ private void pushAudio(byte[] audio, long ts) {
+ if (startPublish) {
+ buffer.put((byte) 6);
+ buffer.put(audio);
+ buffer.flip();
+
+ // I can stream audio
+ //packets successfully using linear PCM at 11025Hz. For those packets I
+ //push one byte (0x06) which specifies the format of audio data in a
+ //ByteBuffer, and then real audio data:
+ RTMPMessage rtmpMsg = RTMPMessage.build(new AudioData(buffer), (int) ts);
+ client.publishStreamData(streamId, rtmpMsg);
+ }
+ }
+ */
+
+ public void pushVideo(VideoData data, int ts) {
+ if (startPublish) {
+ if (Red5.getConnectionLocal() == null) {
+ Red5.setConnectionLocal(client.getConnection());
+ }
+ RTMPMessage rtmpMsg = RTMPMessage.build(data, ts);
+ client.publishStreamData(streamId, rtmpMsg);
+ }
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public String getApp() {
+ return app;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public Number getStreamId() {
+ return streamId;
+ }
+
+ public void setStreamId(Number streamId) {
+ this.streamId = streamId;
+ }
+
+ public void setStartPublish(boolean startPublish) {
+ this.startPublish = startPublish;
+ }
+
+ public IScreenEncoder getEncoder() {
+ return se;
+ }
+
+ public Queue<VideoData> getFrames() {
+ return frames;
+ }
+
+ public void setSendFrameGuard(boolean b) {
+ sendFrameGuard.set(b);
+ }
+
+ public boolean getSendFrameGuard() {
+ return sendFrameGuard.get();
+ }
+
+ public AtomicInteger getTimestamp() {
+ return timestamp;
+ }
+
+ public long getStartTime() {
+ return startTime;
+ }
+
+ public int getTimestampDelta() {
+ return timestampDelta;
+ }
+
+ public void sendCursorStatus() {
+ core.sendCursorStatus();
+ }
+
+ public void setSendCursor(boolean sendCursor) {
+ try {
+ Scheduler s = getScheduler();
+ if (sendCursor) {
+ JobDetail cursorJob = JobBuilder.newJob(CursorJob.class).withIdentity(QUARTZ_CURSOR_JOB_NAME, QUARTZ_GROUP_NAME).build();
+ Trigger cursorTrigger = TriggerBuilder.newTrigger()
+ .withIdentity(QUARTZ_CURSOR_TRIGGER_NAME, QUARTZ_GROUP_NAME)
+ .withSchedule(simpleSchedule().withIntervalInMilliseconds(1000 / Math.min(5, FPS)).repeatForever())
+ .build();
+ cursorJob.getJobDataMap().put(CursorJob.CAPTURE_KEY, this);
+ s.scheduleJob(cursorJob, cursorTrigger);
+ } else {
+ s.deleteJob(JobKey.jobKey(QUARTZ_CURSOR_JOB_NAME, QUARTZ_GROUP_NAME));
+ }
+ } catch (SchedulerException e) {
+ log.error("Unexpected Error schedule/unschedule cursor job", e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenEncoder.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenEncoder.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenEncoder.java
index 3c31281..26dcb4b 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenEncoder.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenEncoder.java
@@ -1,33 +1,33 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.screenshare;
-
-import java.io.IOException;
-
-import org.red5.server.net.rtmp.event.VideoData;
-
-public interface IScreenEncoder {
- void createUnalteredFrame() throws IOException;
-
- VideoData getUnalteredFrame();
-
- VideoData encode(int[][] img) throws IOException;
-
- void reset();
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.screenshare;
+
+import java.io.IOException;
+
+import org.red5.server.net.rtmp.event.VideoData;
+
+public interface IScreenEncoder {
+ void createUnalteredFrame() throws IOException;
+
+ VideoData getUnalteredFrame();
+
+ VideoData encode(int[][] img) throws IOException;
+
+ void reset();
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/RTMPClientPublish.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/RTMPClientPublish.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/RTMPClientPublish.java
index 598f9fd2..7e44ba3 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/RTMPClientPublish.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/RTMPClientPublish.java
@@ -1,103 +1,103 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.screenshare;
-
-import org.red5.client.net.rtmp.INetStreamEventHandler;
-import org.red5.client.net.rtmp.RTMPClient;
-import org.red5.server.api.service.IPendingServiceCall;
-import org.red5.server.api.service.IPendingServiceCallback;
-import org.red5.server.net.ICommand;
-import org.red5.server.net.rtmp.Channel;
-import org.red5.server.net.rtmp.RTMPConnection;
-import org.red5.server.net.rtmp.event.Notify;
-import org.red5.server.net.rtmp.message.Header;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-class RTMPClientPublish extends RTMPClient implements IPendingServiceCallback, INetStreamEventHandler, IScreenShare {
- private static final Logger logger = LoggerFactory.getLogger(RTMPClientPublish.class);
- private final CaptureScreen publishScreen;
- private String id;
- private Core core;
-
- public void setCore(Core core) {
- this.core = core;
- }
-
- RTMPClientPublish(Core core, String host, String app, String id) {
- this.id = id;
- this.core = core;
- publishScreen = new CaptureScreen(core, this, host, app, 1935);
- }
-
- public void connect() {
- super.connect(publishScreen.getHost(), 1935, publishScreen.getApp(), this);
- }
-
- @Override
- public void handleException(Throwable throwable) {
- logger.error("ERROR", throwable);
- }
-
- @Override
- public void connectionOpened(RTMPConnection conn) {
- super.connectionOpened(conn);
- createStream(this);
- }
-
- @Override
- public void connectionClosed(RTMPConnection conn) {
- super.connectionClosed(conn);
- connectionClosed();
- }
-
- private void connectionClosed() {
- publishScreen.setStartPublish(false);
- publishScreen.release();
- core.publishingStop();
- }
-
- @Override
- protected void onCommand(RTMPConnection conn, Channel channel, Header source, ICommand command) {
- super.onCommand(conn, channel, source, command);
- }
-
- @Override
- public void resultReceived(IPendingServiceCall call) {
- String method = call == null ? null : call.getServiceMethodName();
- logger.trace("call ### get Method Name " + method);
- if ("connect".equals(method)) {
- //setConnectionAsSharingClient(); //FIXME
- } else if ("createStream".equals(method)) {
- if (call.getResult() != null) {
- publishScreen.setStreamId((Integer)call.getResult());
- publish(publishScreen.getStreamId(), id, "live", this);
- publishScreen.setStartPublish(true);
- publishScreen.start();
- } else {
- connectionClosed();
- }
- }
- }
-
- @Override
- public void onStreamEvent(Notify notify) {
- //no-op
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.screenshare;
+
+import org.red5.client.net.rtmp.INetStreamEventHandler;
+import org.red5.client.net.rtmp.RTMPClient;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.net.ICommand;
+import org.red5.server.net.rtmp.Channel;
+import org.red5.server.net.rtmp.RTMPConnection;
+import org.red5.server.net.rtmp.event.Notify;
+import org.red5.server.net.rtmp.message.Header;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+class RTMPClientPublish extends RTMPClient implements IPendingServiceCallback, INetStreamEventHandler, IScreenShare {
+ private static final Logger logger = LoggerFactory.getLogger(RTMPClientPublish.class);
+ private final CaptureScreen publishScreen;
+ private String id;
+ private Core core;
+
+ public void setCore(Core core) {
+ this.core = core;
+ }
+
+ RTMPClientPublish(Core core, String host, String app, String id) {
+ this.id = id;
+ this.core = core;
+ publishScreen = new CaptureScreen(core, this, host, app, 1935);
+ }
+
+ public void connect() {
+ super.connect(publishScreen.getHost(), 1935, publishScreen.getApp(), this);
+ }
+
+ @Override
+ public void handleException(Throwable throwable) {
+ logger.error("ERROR", throwable);
+ }
+
+ @Override
+ public void connectionOpened(RTMPConnection conn) {
+ super.connectionOpened(conn);
+ createStream(this);
+ }
+
+ @Override
+ public void connectionClosed(RTMPConnection conn) {
+ super.connectionClosed(conn);
+ connectionClosed();
+ }
+
+ private void connectionClosed() {
+ publishScreen.setStartPublish(false);
+ publishScreen.release();
+ core.publishingStop();
+ }
+
+ @Override
+ protected void onCommand(RTMPConnection conn, Channel channel, Header source, ICommand command) {
+ super.onCommand(conn, channel, source, command);
+ }
+
+ @Override
+ public void resultReceived(IPendingServiceCall call) {
+ String method = call == null ? null : call.getServiceMethodName();
+ logger.trace("call ### get Method Name " + method);
+ if ("connect".equals(method)) {
+ //setConnectionAsSharingClient(); //FIXME
+ } else if ("createStream".equals(method)) {
+ if (call.getResult() != null) {
+ publishScreen.setStreamId((Integer)call.getResult());
+ publish(publishScreen.getStreamId(), id, "live", this);
+ publishScreen.setStartPublish(true);
+ publishScreen.start();
+ } else {
+ connectionClosed();
+ }
+ }
+ }
+
+ @Override
+ public void onStreamEvent(Notify notify) {
+ //no-op
+ }
}
\ No newline at end of file
[10/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
index 0e467be..ebb0a54 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
@@ -1,116 +1,116 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.util.process;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-public class ProcessHelper {
- public static final Logger log = Red5LoggerFactory.getLogger(ProcessHelper.class, OpenmeetingsVariables.webAppRootKey);
-
- public static ConverterProcessResult executeScriptWindows(String process, String[] argv) {
- try {
- String[] cmd = new String[argv.length + 2];
- cmd[0] = "cmd.exe";
- cmd[1] = "/C";
- System.arraycopy(argv, 0, cmd, 2, argv.length);
- Map<String, String> env = new HashMap<>();
- return executeScript(process, cmd, env);
- } catch (Exception t) {
- log.error("executeScriptWindows", t);
- return new ConverterProcessResult(process, t.getMessage(), t);
- }
- }
-
- private static String getCommand(String[] argv) {
- StringBuffer tString = new StringBuffer();
- for (int i = 0; i < argv.length; i++) {
- tString.append(argv[i]).append(" ");
- }
- return tString.toString();
- }
-
- private static void debugCommandStart(String desc, String[] argv) {
- if (log.isDebugEnabled()) {
- log.debug("START " + desc + " ################# ");
- log.debug(getCommand(argv));
- }
- }
-
- private static void debugCommandEnd(String desc) {
- if (log.isDebugEnabled()) {
- log.debug("END " + desc + " ################# ");
- }
- }
-
- public static ConverterProcessResult executeScript(String process, String[] argv) {
- Map<String, String> env = new HashMap<>();
- return executeScript(process, argv, env);
- }
-
- public static ConverterProcessResult executeScript(String process, String[] argv, Map<? extends String, ? extends String> env) {
- ConverterProcessResult res = new ConverterProcessResult();
- res.setProcess(process);
- debugCommandStart(process, argv);
-
- Process proc = null;
- try {
- res.setCommand(getCommand(argv));
- res.setOut("");
-
- // By using the process Builder we have access to modify the
- // environment variables
- // that is handy to set variables to run it inside eclipse
- ProcessBuilder pb = new ProcessBuilder(argv);
- pb.environment().putAll(env);
-
- proc = pb.start();
-
- // 20-minute timeout for command execution
- // FFMPEG conversion of Recordings may take a real long time until
- // its finished
- proc.waitFor(20, TimeUnit.MINUTES);
-
- res.setExitCode(proc.exitValue());
- res.setOut(IOUtils.toString(proc.getInputStream(), UTF_8));
- res.setError(IOUtils.toString(proc.getErrorStream(), UTF_8));
- } catch (Throwable t) {
- log.error("executeScript", t);
- res.setError(t.getMessage());
- res.setException(t.toString());
- res.setExitCode(-1);
- } finally {
- if (proc != null) {
- proc.destroy();
- }
- }
-
- debugCommandEnd(process);
- return res;
- }
-}
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.util.process;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class ProcessHelper {
+ public static final Logger log = Red5LoggerFactory.getLogger(ProcessHelper.class, OpenmeetingsVariables.webAppRootKey);
+
+ public static ConverterProcessResult executeScriptWindows(String process, String[] argv) {
+ try {
+ String[] cmd = new String[argv.length + 2];
+ cmd[0] = "cmd.exe";
+ cmd[1] = "/C";
+ System.arraycopy(argv, 0, cmd, 2, argv.length);
+ Map<String, String> env = new HashMap<>();
+ return executeScript(process, cmd, env);
+ } catch (Exception t) {
+ log.error("executeScriptWindows", t);
+ return new ConverterProcessResult(process, t.getMessage(), t);
+ }
+ }
+
+ private static String getCommand(String[] argv) {
+ StringBuffer tString = new StringBuffer();
+ for (int i = 0; i < argv.length; i++) {
+ tString.append(argv[i]).append(" ");
+ }
+ return tString.toString();
+ }
+
+ private static void debugCommandStart(String desc, String[] argv) {
+ if (log.isDebugEnabled()) {
+ log.debug("START " + desc + " ################# ");
+ log.debug(getCommand(argv));
+ }
+ }
+
+ private static void debugCommandEnd(String desc) {
+ if (log.isDebugEnabled()) {
+ log.debug("END " + desc + " ################# ");
+ }
+ }
+
+ public static ConverterProcessResult executeScript(String process, String[] argv) {
+ Map<String, String> env = new HashMap<>();
+ return executeScript(process, argv, env);
+ }
+
+ public static ConverterProcessResult executeScript(String process, String[] argv, Map<? extends String, ? extends String> env) {
+ ConverterProcessResult res = new ConverterProcessResult();
+ res.setProcess(process);
+ debugCommandStart(process, argv);
+
+ Process proc = null;
+ try {
+ res.setCommand(getCommand(argv));
+ res.setOut("");
+
+ // By using the process Builder we have access to modify the
+ // environment variables
+ // that is handy to set variables to run it inside eclipse
+ ProcessBuilder pb = new ProcessBuilder(argv);
+ pb.environment().putAll(env);
+
+ proc = pb.start();
+
+ // 20-minute timeout for command execution
+ // FFMPEG conversion of Recordings may take a real long time until
+ // its finished
+ proc.waitFor(20, TimeUnit.MINUTES);
+
+ res.setExitCode(proc.exitValue());
+ res.setOut(IOUtils.toString(proc.getInputStream(), UTF_8));
+ res.setError(IOUtils.toString(proc.getErrorStream(), UTF_8));
+ } catch (Throwable t) {
+ log.error("executeScript", t);
+ res.setError(t.getMessage());
+ res.setException(t.toString());
+ res.setExitCode(-1);
+ } finally {
+ if (proc != null) {
+ proc.destroy();
+ }
+ }
+
+ debugCommandEnd(process);
+ return res;
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-util/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/site/site.xml b/openmeetings-util/src/site/site.xml
index c26954e..0d9f35c 100644
--- a/openmeetings-util/src/site/site.xml
+++ b/openmeetings-util/src/site/site.xml
@@ -1,40 +1,40 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu ref="parent"/>
- <menu name="Project">
- <item name="About" href="/index.html" />
- <item name="Info" href="/project-info.html" />
- <item name="Summary" href="/project-summary.html" />
- <item name="License" href="/license.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Dependency Convergence" href="/dependency-convergence.html" />
- <item name="RAT Report" href="/rat-report.html" />
- <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <bottomNav maxSpan="12">
- <column>Parent Project</column>
- <column>Project</column>
- </bottomNav>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu ref="parent"/>
+ <menu name="Project">
+ <item name="About" href="/index.html" />
+ <item name="Info" href="/project-info.html" />
+ <item name="Summary" href="/project-summary.html" />
+ <item name="License" href="/license.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Dependency Convergence" href="/dependency-convergence.html" />
+ <item name="RAT Report" href="/rat-report.html" />
+ <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <bottomNav maxSpan="12">
+ <column>Parent Project</column>
+ <column>Project</column>
+ </bottomNav>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
index 7405178..2f100ed 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
@@ -1,181 +1,181 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.IModel;
-
-/**
- * provides basic functionality to insert, update, remove, refresh record in
- * admin section
- *
- * @author swagner
- *
- * @param <T>
- */
-public abstract class AdminBaseForm<T> extends Form<T> {
- private static final long serialVersionUID = 1L;
- private AdminSavePanel<T> savePanel;
-
- public AdminBaseForm(String id, IModel<T> object) {
- super(id, object);
-
- savePanel = new AdminSavePanel<T>("buttons", this) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- AdminBaseForm.this.onSaveSubmit(target, form);
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- AdminBaseForm.this.onSaveError(target, form);
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
- AdminBaseForm.this.onNewSubmit(target, form);
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- AdminBaseForm.this.onNewError(target, form);
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- AdminBaseForm.this.onRefreshSubmit(target, form);
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- AdminBaseForm.this.onRefreshError(target, form);
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- AdminBaseForm.this.onDeleteSubmit(target, form);
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- AdminBaseForm.this.onDeleteError(target, form);
- }
-
- @Override
- protected boolean isNewBtnVisible() {
- return AdminBaseForm.this.isNewBtnVisible();
- }
-
- @Override
- protected boolean isDelBtnVisible() {
- return AdminBaseForm.this.isDelBtnVisible();
- }
- };
- add(savePanel);
- }
-
- /**
- * @see AdminBaseForm#hideNewRecord()
- */
- public void hideNewRecord() {
- savePanel.hideNewRecord();
- }
-
- /**
- * @see AdminBaseForm#showNewRecord()
- */
- public void showNewRecord() {
- savePanel.showNewRecord();
- }
-
- protected boolean isNewBtnVisible() {
- return true;
- }
-
- protected boolean isDelBtnVisible() {
- return true;
- }
- /**
- * invoked when user press save button
- *
- * @param target
- * @param form
- */
- protected abstract void onSaveSubmit(AjaxRequestTarget target, Form<?> form);
-
- /**
- * invoked when save has error
- *
- * @param target
- * @param form
- */
- protected abstract void onSaveError(AjaxRequestTarget target, Form<?> form);
-
- /**
- * invoked when new button is pressed
- *
- * @param target
- * @param form
- */
- protected abstract void onNewSubmit(AjaxRequestTarget target, Form<?> form);
-
- /**
- * invoked if new has error
- *
- * @param target
- * @param form
- */
- protected abstract void onNewError(AjaxRequestTarget target, Form<?> form);
-
- /**
- * invoked when refresh button is pressed
- *
- * @param target
- * @param form
- */
- protected abstract void onRefreshSubmit(AjaxRequestTarget target, Form<?> form);
-
- /**
- * invoked when refresh has error
- *
- * @param target
- * @param form
- */
- protected abstract void onRefreshError(AjaxRequestTarget target, Form<?> form);
-
- /**
- * invoked when delete button is pressed
- *
- * @param target
- * @param form
- */
- protected abstract void onDeleteSubmit(AjaxRequestTarget target, Form<?> form);
-
- /**
- * invoked when delete has error
- *
- * @param target
- * @param form
- */
- protected abstract void onDeleteError(AjaxRequestTarget target, Form<?> form);
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.IModel;
+
+/**
+ * provides basic functionality to insert, update, remove, refresh record in
+ * admin section
+ *
+ * @author swagner
+ *
+ * @param <T>
+ */
+public abstract class AdminBaseForm<T> extends Form<T> {
+ private static final long serialVersionUID = 1L;
+ private AdminSavePanel<T> savePanel;
+
+ public AdminBaseForm(String id, IModel<T> object) {
+ super(id, object);
+
+ savePanel = new AdminSavePanel<T>("buttons", this) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ AdminBaseForm.this.onSaveSubmit(target, form);
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ AdminBaseForm.this.onSaveError(target, form);
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+ AdminBaseForm.this.onNewSubmit(target, form);
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ AdminBaseForm.this.onNewError(target, form);
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ AdminBaseForm.this.onRefreshSubmit(target, form);
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ AdminBaseForm.this.onRefreshError(target, form);
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ AdminBaseForm.this.onDeleteSubmit(target, form);
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ AdminBaseForm.this.onDeleteError(target, form);
+ }
+
+ @Override
+ protected boolean isNewBtnVisible() {
+ return AdminBaseForm.this.isNewBtnVisible();
+ }
+
+ @Override
+ protected boolean isDelBtnVisible() {
+ return AdminBaseForm.this.isDelBtnVisible();
+ }
+ };
+ add(savePanel);
+ }
+
+ /**
+ * @see AdminBaseForm#hideNewRecord()
+ */
+ public void hideNewRecord() {
+ savePanel.hideNewRecord();
+ }
+
+ /**
+ * @see AdminBaseForm#showNewRecord()
+ */
+ public void showNewRecord() {
+ savePanel.showNewRecord();
+ }
+
+ protected boolean isNewBtnVisible() {
+ return true;
+ }
+
+ protected boolean isDelBtnVisible() {
+ return true;
+ }
+ /**
+ * invoked when user press save button
+ *
+ * @param target
+ * @param form
+ */
+ protected abstract void onSaveSubmit(AjaxRequestTarget target, Form<?> form);
+
+ /**
+ * invoked when save has error
+ *
+ * @param target
+ * @param form
+ */
+ protected abstract void onSaveError(AjaxRequestTarget target, Form<?> form);
+
+ /**
+ * invoked when new button is pressed
+ *
+ * @param target
+ * @param form
+ */
+ protected abstract void onNewSubmit(AjaxRequestTarget target, Form<?> form);
+
+ /**
+ * invoked if new has error
+ *
+ * @param target
+ * @param form
+ */
+ protected abstract void onNewError(AjaxRequestTarget target, Form<?> form);
+
+ /**
+ * invoked when refresh button is pressed
+ *
+ * @param target
+ * @param form
+ */
+ protected abstract void onRefreshSubmit(AjaxRequestTarget target, Form<?> form);
+
+ /**
+ * invoked when refresh has error
+ *
+ * @param target
+ * @param form
+ */
+ protected abstract void onRefreshError(AjaxRequestTarget target, Form<?> form);
+
+ /**
+ * invoked when delete button is pressed
+ *
+ * @param target
+ * @param form
+ */
+ protected abstract void onDeleteSubmit(AjaxRequestTarget target, Form<?> form);
+
+ /**
+ * invoked when delete has error
+ *
+ * @param target
+ * @param form
+ */
+ protected abstract void onDeleteError(AjaxRequestTarget target, Form<?> form);
+
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/SearchableDataView.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/SearchableDataView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/SearchableDataView.java
index 8bc5450..ee12b8a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/SearchableDataView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/SearchableDataView.java
@@ -1,45 +1,45 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin;
-
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
-import org.apache.wicket.markup.repeater.data.DataView;
-
-/**
- * Provides {@link SearchableDataProvider}
- *
- * @author swagner
- *
- * @param <T>
- */
-public abstract class SearchableDataView<T extends IDataProviderEntity> extends DataView<T> {
- private static final long serialVersionUID = 1L;
- private SearchableDataProvider<T> dp;
-
- public SearchableDataView(String id, SearchableDataProvider<T> dp) {
- super(id, dp);
- this.dp = dp;
- }
-
- @Override
- public SearchableDataProvider<T> getDataProvider() {
- return dp;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.markup.repeater.data.DataView;
+
+/**
+ * Provides {@link SearchableDataProvider}
+ *
+ * @author swagner
+ *
+ * @param <T>
+ */
+public abstract class SearchableDataView<T extends IDataProviderEntity> extends DataView<T> {
+ private static final long serialVersionUID = 1L;
+ private SearchableDataProvider<T> dp;
+
+ public SearchableDataView(String id, SearchableDataProvider<T> dp) {
+ super(id, dp);
+ this.dp = dp;
+ }
+
+ @Override
+ public SearchableDataProvider<T> getDataProvider() {
+ return dp;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
index f804ba6..758890f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
@@ -1,242 +1,242 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.backup;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import java.io.File;
-import java.text.DecimalFormat;
-import java.util.Date;
-
-import org.apache.openmeetings.backup.BackupExport;
-import org.apache.openmeetings.backup.BackupImport;
-import org.apache.openmeetings.backup.ProgressHolder;
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.util.CalendarPatterns;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.web.admin.AdminPanel;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.util.AjaxDownload;
-import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
-import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
-import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.upload.FileUpload;
-import org.apache.wicket.markup.html.form.upload.FileUploadField;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.lang.Bytes;
-import org.apache.wicket.util.resource.FileResourceStream;
-import org.apache.wicket.util.time.Duration;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
-import com.googlecode.wicket.jquery.ui.widget.progressbar.ProgressBar;
-import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
-/**
- * Panel component to manage Backup Import/Export
- *
- * @author swagner
- *
- */
-public class BackupPanel extends AdminPanel {
- private static final Logger log = Red5LoggerFactory.getLogger(BackupPanel.class, webAppRootKey);
-
- private static final long serialVersionUID = -1L;
-
- private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
-
- /**
- * Form to handle upload files
- *
- * @author swagner
- *
- */
- private class BackupForm extends Form<Void> {
- private static final long serialVersionUID = 1L;
- private final FileUploadField fileUploadField;
- private final Model<Boolean> includeFilesInBackup = Model.of(true);
- private final AbstractAjaxTimerBehavior timer;
- private final ProgressBar progressBar;
- private File backupFile;
- private Throwable th = null;
- private boolean started = false;
- private ProgressHolder progressHolder;
-
- public BackupForm(String id) {
- super(id);
-
- // set this form to multipart mode (allways needed for uploads!)
- setMultiPart(true);
-
- // set max upload size in form as info text
- Long maxBytes = getBean(ConfigurationDao.class).getMaxUploadSize();
- double megaBytes = maxBytes.doubleValue() / 1024 / 1024;
- DecimalFormat formatter = new DecimalFormat("#,###.00");
- add(new Label("MaxUploadSize", formatter.format(megaBytes)));
-
- // Add one file input field
- fileUploadField = new FileUploadField("fileInput");
-
- add(new CheckBox("includeFilesInBackup", includeFilesInBackup));
-
- // Set maximum size controlled by configuration
- setMaxSize(Bytes.bytes(maxBytes));
-
- // Add a component to download a file without page refresh
- final AjaxDownload download = new AjaxDownload();
- add(download);
- // add an download button
- add(new AjaxButton("download", this) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- String dateString = "backup_" + CalendarPatterns.getTimeForStreamId(new Date());
- backupFile = new File(OmFileHelper.getUploadBackupDir(), dateString + ".zip");
- th = null;
- started = true;
- progressHolder = new ProgressHolder();
-
- timer.restart(target);
- new Thread(new BackupProcess(getBean(BackupExport.class), includeFilesInBackup.getObject())
- , "Openmeetings - " + dateString).start();
-
- // repaint the feedback panel so that it is hidden
- target.add(feedback, progressBar.setVisible(true));
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- // repaint the feedback panel so errors are shown
- target.add(feedback);
- }
- });
- add(timer = new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onTimer(AjaxRequestTarget target) {
- if (!started) {
- timer.stop(target);
- return;
- }
- if (th != null) {
- timer.stop(target);
- //TODO change text, localize
- progressBar.setVisible(false);
- feedback.error(th.getMessage());
- target.add(feedback);
- } else {
- progressBar.setModelObject(progressHolder.getProgress());
- progressBar.refresh(target);
- //TODO add current step result as info
- }
- }
- });
- add((progressBar = new ProgressBar("dprogress", new Model<>(0)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onComplete(AjaxRequestTarget target) {
- timer.stop(target);
- target.add(progressBar.setVisible(false));
-
- download.setFileName(backupFile.getName());
- download.setResourceStream(new FileResourceStream(backupFile));
- download.initiate(target);
- }
- }).setVisible(false).setOutputMarkupPlaceholderTag(true));
- add(fileUploadField.add(new AjaxFormSubmitBehavior(this, "change") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- FileUpload upload = fileUploadField.getFileUpload();
- try {
- if (upload == null || upload.getInputStream() == null) {
- feedback.error("File is empty");
- target.add(feedback);
- return;
- }
- getBean(BackupImport.class).performImport(upload.getInputStream());
- } catch (Exception e) {
- log.error("Exception on panel backup upload ", e);
- feedback.error(e);
- }
- // repaint the feedback panel so that it is hidden
- target.add(feedback);
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- // repaint the feedback panel so errors are shown
- target.add(feedback);
- }
- }));
- add(new Label("cmdLineDesc", Application.getString(1505)).setEscapeModelStrings(false));
- }
-
- @Override
- protected void onDetach() {
- includeFilesInBackup.detach();
- super.onDetach();
- }
-
- private class BackupProcess implements Runnable {
- private BackupExport backup;
- private boolean includeFiles;
-
- public BackupProcess(BackupExport backup, boolean includeFiles) {
- this.backup = backup;
- this.includeFiles = includeFiles;
- th = null;
- }
-
- @Override
- public void run() {
- try {
- backup.performExport(backupFile, includeFiles, progressHolder);
- } catch (Exception e) {
- log.error("Exception on panel backup download ", e);
- th = e;
- }
- }
- }
- }
-
- public BackupPanel(String id) {
- super(id);
-
- add(feedback);
-
- BackupForm backupForm = new BackupForm("backupUpload");
-
- backupForm.add(new UploadProgressBar("progress", backupForm, backupForm.fileUploadField));
-
- add(backupForm);
- add(BootstrapFileUploadBehavior.INSTANCE);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.backup;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.io.File;
+import java.text.DecimalFormat;
+import java.util.Date;
+
+import org.apache.openmeetings.backup.BackupExport;
+import org.apache.openmeetings.backup.BackupImport;
+import org.apache.openmeetings.backup.ProgressHolder;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.markup.html.form.upload.FileUploadField;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.lang.Bytes;
+import org.apache.wicket.util.resource.FileResourceStream;
+import org.apache.wicket.util.time.Duration;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
+import com.googlecode.wicket.jquery.ui.widget.progressbar.ProgressBar;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+/**
+ * Panel component to manage Backup Import/Export
+ *
+ * @author swagner
+ *
+ */
+public class BackupPanel extends AdminPanel {
+ private static final Logger log = Red5LoggerFactory.getLogger(BackupPanel.class, webAppRootKey);
+
+ private static final long serialVersionUID = -1L;
+
+ private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+
+ /**
+ * Form to handle upload files
+ *
+ * @author swagner
+ *
+ */
+ private class BackupForm extends Form<Void> {
+ private static final long serialVersionUID = 1L;
+ private final FileUploadField fileUploadField;
+ private final Model<Boolean> includeFilesInBackup = Model.of(true);
+ private final AbstractAjaxTimerBehavior timer;
+ private final ProgressBar progressBar;
+ private File backupFile;
+ private Throwable th = null;
+ private boolean started = false;
+ private ProgressHolder progressHolder;
+
+ public BackupForm(String id) {
+ super(id);
+
+ // set this form to multipart mode (allways needed for uploads!)
+ setMultiPart(true);
+
+ // set max upload size in form as info text
+ Long maxBytes = getBean(ConfigurationDao.class).getMaxUploadSize();
+ double megaBytes = maxBytes.doubleValue() / 1024 / 1024;
+ DecimalFormat formatter = new DecimalFormat("#,###.00");
+ add(new Label("MaxUploadSize", formatter.format(megaBytes)));
+
+ // Add one file input field
+ fileUploadField = new FileUploadField("fileInput");
+
+ add(new CheckBox("includeFilesInBackup", includeFilesInBackup));
+
+ // Set maximum size controlled by configuration
+ setMaxSize(Bytes.bytes(maxBytes));
+
+ // Add a component to download a file without page refresh
+ final AjaxDownload download = new AjaxDownload();
+ add(download);
+ // add an download button
+ add(new AjaxButton("download", this) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ String dateString = "backup_" + CalendarPatterns.getTimeForStreamId(new Date());
+ backupFile = new File(OmFileHelper.getUploadBackupDir(), dateString + ".zip");
+ th = null;
+ started = true;
+ progressHolder = new ProgressHolder();
+
+ timer.restart(target);
+ new Thread(new BackupProcess(getBean(BackupExport.class), includeFilesInBackup.getObject())
+ , "Openmeetings - " + dateString).start();
+
+ // repaint the feedback panel so that it is hidden
+ target.add(feedback, progressBar.setVisible(true));
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ // repaint the feedback panel so errors are shown
+ target.add(feedback);
+ }
+ });
+ add(timer = new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onTimer(AjaxRequestTarget target) {
+ if (!started) {
+ timer.stop(target);
+ return;
+ }
+ if (th != null) {
+ timer.stop(target);
+ //TODO change text, localize
+ progressBar.setVisible(false);
+ feedback.error(th.getMessage());
+ target.add(feedback);
+ } else {
+ progressBar.setModelObject(progressHolder.getProgress());
+ progressBar.refresh(target);
+ //TODO add current step result as info
+ }
+ }
+ });
+ add((progressBar = new ProgressBar("dprogress", new Model<>(0)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onComplete(AjaxRequestTarget target) {
+ timer.stop(target);
+ target.add(progressBar.setVisible(false));
+
+ download.setFileName(backupFile.getName());
+ download.setResourceStream(new FileResourceStream(backupFile));
+ download.initiate(target);
+ }
+ }).setVisible(false).setOutputMarkupPlaceholderTag(true));
+ add(fileUploadField.add(new AjaxFormSubmitBehavior(this, "change") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ FileUpload upload = fileUploadField.getFileUpload();
+ try {
+ if (upload == null || upload.getInputStream() == null) {
+ feedback.error("File is empty");
+ target.add(feedback);
+ return;
+ }
+ getBean(BackupImport.class).performImport(upload.getInputStream());
+ } catch (Exception e) {
+ log.error("Exception on panel backup upload ", e);
+ feedback.error(e);
+ }
+ // repaint the feedback panel so that it is hidden
+ target.add(feedback);
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ // repaint the feedback panel so errors are shown
+ target.add(feedback);
+ }
+ }));
+ add(new Label("cmdLineDesc", Application.getString(1505)).setEscapeModelStrings(false));
+ }
+
+ @Override
+ protected void onDetach() {
+ includeFilesInBackup.detach();
+ super.onDetach();
+ }
+
+ private class BackupProcess implements Runnable {
+ private BackupExport backup;
+ private boolean includeFiles;
+
+ public BackupProcess(BackupExport backup, boolean includeFiles) {
+ this.backup = backup;
+ this.includeFiles = includeFiles;
+ th = null;
+ }
+
+ @Override
+ public void run() {
+ try {
+ backup.performExport(backupFile, includeFiles, progressHolder);
+ } catch (Exception e) {
+ log.error("Exception on panel backup download ", e);
+ th = e;
+ }
+ }
+ }
+ }
+
+ public BackupPanel(String id) {
+ super(id);
+
+ add(feedback);
+
+ BackupForm backupForm = new BackupForm("backupUpload");
+
+ backupForm.add(new UploadProgressBar("progress", backupForm, backupForm.fileUploadField));
+
+ add(backupForm);
+ add(BootstrapFileUploadBehavior.INSTANCE);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
index 5a8393e..6f11e2b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
@@ -1,143 +1,143 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.configurations;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.entity.basic.Configuration;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.time.Duration;
-import org.apache.wicket.validation.IValidatable;
-import org.apache.wicket.validation.IValidator;
-import org.apache.wicket.validation.ValidationError;
-
-/**
- * Handle {@link Configuration} items as list and form
- *
- * @author swagner
- *
- */
-public class ConfigForm extends AdminBaseForm<Configuration> {
- private static final long serialVersionUID = 1L;
- private final WebMarkupContainer listContainer;
-
- private void refresh(AjaxRequestTarget target) {
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- public ConfigForm(String id, WebMarkupContainer listContainer, Configuration configuration) {
- super(id, new CompoundPropertyModel<>(configuration));
- setOutputMarkupId(true);
- this.listContainer = listContainer;
- add(new RequiredTextField<String>("key").setLabel(Model.of(Application.getString(267))).add(new IValidator<String>(){
- private static final long serialVersionUID = 1L;
-
- @Override
- public void validate(IValidatable<String> validatable) {
- Configuration c = getBean(ConfigurationDao.class).forceGet(validatable.getValue());
- if (c != null && !c.isDeleted() && !c.getId().equals(ConfigForm.this.getModelObject().getId())) {
- validatable.error(new ValidationError(Application.getString(1544L)));
- }
- }
- }));
- add(new TextField<String>("value").setLabel(Model.of(Application.getString(271))));
- add(forDatePattern("updated", WEB_DATE_PATTERN));
- add(new Label("user.login"));
- add(new TextArea<String>("comment"));
-
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
- Configuration c = cfgDao.forceGet(getModelObject().getKey());
- if (c != null && c.isDeleted() && !c.getId().equals(getModelObject().getId())) {
- getModelObject().setId(c.getId());
- }
- setModelObject(getBean(ConfigurationDao.class).update(getModelObject(), WebSession.getUserId()));
- hideNewRecord();
- target.add(listContainer);
- refresh(target);
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
- this.setModelObject(new Configuration());
- refresh(target);
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- Configuration conf = getModelObject();
- if (conf.getId() != null) {
- conf = getBean(ConfigurationDao.class).get(conf.getId());
- } else {
- conf = new Configuration();
- }
- setModelObject(conf);
- refresh(target);
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- getBean(ConfigurationDao.class).delete(getModelObject(), WebSession.getUserId());
- setModelObject(new Configuration());
- target.add(listContainer);
- refresh(target);
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.configurations;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.ValidationError;
+
+/**
+ * Handle {@link Configuration} items as list and form
+ *
+ * @author swagner
+ *
+ */
+public class ConfigForm extends AdminBaseForm<Configuration> {
+ private static final long serialVersionUID = 1L;
+ private final WebMarkupContainer listContainer;
+
+ private void refresh(AjaxRequestTarget target) {
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ public ConfigForm(String id, WebMarkupContainer listContainer, Configuration configuration) {
+ super(id, new CompoundPropertyModel<>(configuration));
+ setOutputMarkupId(true);
+ this.listContainer = listContainer;
+ add(new RequiredTextField<String>("key").setLabel(Model.of(Application.getString(267))).add(new IValidator<String>(){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void validate(IValidatable<String> validatable) {
+ Configuration c = getBean(ConfigurationDao.class).forceGet(validatable.getValue());
+ if (c != null && !c.isDeleted() && !c.getId().equals(ConfigForm.this.getModelObject().getId())) {
+ validatable.error(new ValidationError(Application.getString(1544L)));
+ }
+ }
+ }));
+ add(new TextField<String>("value").setLabel(Model.of(Application.getString(271))));
+ add(forDatePattern("updated", WEB_DATE_PATTERN));
+ add(new Label("user.login"));
+ add(new TextArea<String>("comment"));
+
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+ Configuration c = cfgDao.forceGet(getModelObject().getKey());
+ if (c != null && c.isDeleted() && !c.getId().equals(getModelObject().getId())) {
+ getModelObject().setId(c.getId());
+ }
+ setModelObject(getBean(ConfigurationDao.class).update(getModelObject(), WebSession.getUserId()));
+ hideNewRecord();
+ target.add(listContainer);
+ refresh(target);
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+ this.setModelObject(new Configuration());
+ refresh(target);
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ Configuration conf = getModelObject();
+ if (conf.getId() != null) {
+ conf = getBean(ConfigurationDao.class).get(conf.getId());
+ } else {
+ conf = new Configuration();
+ }
+ setModelObject(conf);
+ refresh(target);
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ getBean(ConfigurationDao.class).delete(getModelObject(), WebSession.getUserId());
+ setModelObject(new Configuration());
+ target.add(listContainer);
+ refresh(target);
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
index c0c91d0..99de0e2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
@@ -1,94 +1,94 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.configurations;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.entity.basic.Configuration;
-import org.apache.openmeetings.web.admin.AdminPanel;
-import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.common.PagedEntityListPanel;
-import org.apache.openmeetings.web.data.DataViewContainer;
-import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-
-/**
- * add/update/delete {@link Configuration}
- *
- * @author swagner
- *
- */
-public class ConfigsPanel extends AdminPanel {
- private static final long serialVersionUID = 1L;
- private ConfigForm form;
- private final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
-
- public ConfigsPanel(String id) {
- super(id);
-
- SearchableDataView<Configuration> dataView = new SearchableDataView<Configuration>("configList"
- , new SearchableDataProvider<>(ConfigurationDao.class)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final Item<Configuration> item) {
- final Configuration c = item.getModelObject();
- item.add(new Label("id"));
- item.add(new Label("key"));
- item.add(new Label("value"));
- item.add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- form.hideNewRecord();
- form.setModelObject(c);
- target.add(form, listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
- });
- item.add(AttributeModifier.replace("class", getRowClass(c.getId(), form.getModelObject().getId())));
- }
- };
- add(listContainer.add(dataView).setOutputMarkupId(true));
- PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- target.add(listContainer);
- }
- };
- DataViewContainer<Configuration> container = new DataViewContainer<>(listContainer, dataView, navigator);
- container.addLink(new OmOrderByBorder<>("orderById", "id", container))
- .addLink(new OmOrderByBorder<>("orderByKey", "key", container))
- .addLink(new OmOrderByBorder<>("orderByValue", "value", container));
- add(container.getLinks());
- add(navigator);
-
- form = new ConfigForm("form", listContainer, new Configuration());
- form.showNewRecord();
- add(form);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.configurations;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+/**
+ * add/update/delete {@link Configuration}
+ *
+ * @author swagner
+ *
+ */
+public class ConfigsPanel extends AdminPanel {
+ private static final long serialVersionUID = 1L;
+ private ConfigForm form;
+ private final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+
+ public ConfigsPanel(String id) {
+ super(id);
+
+ SearchableDataView<Configuration> dataView = new SearchableDataView<Configuration>("configList"
+ , new SearchableDataProvider<>(ConfigurationDao.class)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final Item<Configuration> item) {
+ final Configuration c = item.getModelObject();
+ item.add(new Label("id"));
+ item.add(new Label("key"));
+ item.add(new Label("value"));
+ item.add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ form.hideNewRecord();
+ form.setModelObject(c);
+ target.add(form, listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+ });
+ item.add(AttributeModifier.replace("class", getRowClass(c.getId(), form.getModelObject().getId())));
+ }
+ };
+ add(listContainer.add(dataView).setOutputMarkupId(true));
+ PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ target.add(listContainer);
+ }
+ };
+ DataViewContainer<Configuration> container = new DataViewContainer<>(listContainer, dataView, navigator);
+ container.addLink(new OmOrderByBorder<>("orderById", "id", container))
+ .addLink(new OmOrderByBorder<>("orderByKey", "key", container))
+ .addLink(new OmOrderByBorder<>("orderByValue", "value", container));
+ add(container.getLinks());
+ add(navigator);
+
+ form = new ConfigForm("form", listContainer, new Configuration());
+ form.showNewRecord();
+ add(form);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
index cddb3da..e07780d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -1,250 +1,250 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.groups;
-
-import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.util.OmFileHelper.getGroupLogo;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getRights;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl;
-
-import java.io.File;
-
-import org.apache.openmeetings.core.converter.ImageConverter;
-import org.apache.openmeetings.db.dao.user.GroupDao;
-import org.apache.openmeetings.db.dao.user.GroupUserDao;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.util.StoredFile;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
-import org.apache.openmeetings.web.common.UploadableImagePanel;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.NumberTextField;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.time.Duration;
-import org.wicketstuff.select2.Select2Choice;
-
-public class GroupForm extends AdminBaseForm<Group> {
- private static final long serialVersionUID = 1L;
- private GroupUsersPanel usersPanel;
- private final WebMarkupContainer groupList;
- private final Select2Choice<User> userToadd;
- private final NumberTextField<Integer> maxFilesSize = new NumberTextField<>("maxFilesSize");
- private final NumberTextField<Integer> maxRecordingsSize = new NumberTextField<>("maxRecordingsSize");
- private final NumberTextField<Integer> maxRooms = new NumberTextField<>("maxRooms");
- private final NumberTextField<Integer> recordingTtl = new NumberTextField<>("recordingTtl");
- private final NumberTextField<Integer> reminderDays = new NumberTextField<>("reminderDays");
- private final UploadableImagePanel logo = new UploadableImagePanel("logo") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected String getImageUrl() {
- return getUrl(getRequestCycle(), GroupForm.this.getModelObject().getId());
- }
-
- @Override
- protected void processImage(StoredFile sf, File f) throws Exception {
- getBean(ImageConverter.class).resize(f, getGroupLogo(GroupForm.this.getModelObject().getId(), false), null, 28);
- }
-
- @Override
- protected String getTitle() {
- return getString("admin.group.form.logo");
- }
- };
-
- static String formatUser(User choice) {
- return String.format("%s [%s %s]", choice.getLogin(), choice.getFirstname(), choice.getLastname());
- }
-
- public GroupForm(String id, WebMarkupContainer groupList, Group group) {
- super(id, new CompoundPropertyModel<>(group));
- this.groupList = groupList;
- setOutputMarkupId(true);
-
- usersPanel = new GroupUsersPanel("users", getGroupId());
- add(usersPanel);
-
- add(userToadd = new Select2Choice<>("user2add", Model.of((User)null), new AdminUserChoiceProvider() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getDisplayValue(User choice) {
- return formatUser(choice);
- }
- }));
- userToadd.add(new AjaxFormComponentUpdatingBehavior("change") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- Group o = GroupForm.this.getModelObject();
- User u = userToadd.getModelObject();
- boolean found = false;
- if (o.getId() != null) {
- found = null != getBean(GroupUserDao.class).getByGroupAndUser(o.getId(), u.getId());
- }
- if (!found && u != null) {
- for (GroupUser ou : usersPanel.getUsers2add()) {
- if (ou.getUser().getId().equals(u.getId())) {
- found = true;
- break;
- }
- }
- if (!found) {
- GroupUser ou = new GroupUser(o, u);
- usersPanel.getUsers2add().add(ou);
-
- userToadd.setModelObject(null);
- target.add(usersPanel, userToadd);
- }
- }
- }
- });
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-
- @Override
- protected boolean isNewBtnVisible() {
- return !hasGroupAdminLevel(getRights());
- }
-
- @Override
- protected boolean isDelBtnVisible() {
- return !hasGroupAdminLevel(getRights());
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- final boolean isGroupAdmin = hasGroupAdminLevel(getRights());
- userToadd.setEnabled(!isGroupAdmin);
- add(new RequiredTextField<String>("name").setLabel(Model.of(getString("165"))));
- add(logo);
- add(new TextField<String>("tag").setLabel(Model.of(getString("admin.group.form.tag"))));
- add(new CheckBox("restricted").setLabel(Model.of(getString("restricted.group.files"))));
- add(new AjaxCheckBox("limited") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- target.add(
- maxFilesSize.setEnabled(getModelObject())
- , maxRecordingsSize.setEnabled(getModelObject())
- , maxRooms.setEnabled(getModelObject())
- , recordingTtl.setEnabled(getModelObject())
- , reminderDays.setEnabled(getModelObject())
- );
- }
- }.setLabel(Model.of(getString("admin.group.form.limited"))));
- add(maxFilesSize.setLabel(Model.of(getString("admin.group.form.maxFilesSize"))).setEnabled(false).setOutputMarkupId(true));
- add(maxRecordingsSize.setLabel(Model.of(getString("admin.group.form.maxRecordingsSize"))).setEnabled(false).setOutputMarkupId(true));
- add(maxRooms.setLabel(Model.of(getString("admin.group.form.maxRooms"))).setEnabled(false).setOutputMarkupId(true));
- add(recordingTtl.setLabel(Model.of(getString("admin.group.form.recordingTtl"))).setEnabled(false).setOutputMarkupId(true));
- add(reminderDays.setLabel(Model.of(getString("admin.group.form.reminderDays"))).setEnabled(false).setOutputMarkupId(true));
- }
-
- public void updateView(AjaxRequestTarget target) {
- userToadd.setModelObject(null);
- usersPanel.update(getGroupId());
- maxFilesSize.setEnabled(getModelObject().isLimited());
- maxRecordingsSize.setEnabled(getModelObject().isLimited());
- maxRooms.setEnabled(getModelObject().isLimited());
- recordingTtl.setEnabled(getModelObject().isLimited());
- reminderDays.setEnabled(getModelObject().isLimited());
- logo.update();
- target.add(this, groupList);
- target.appendJavaScript("adminPanelInit();");
- }
-
- private long getGroupId() {
- return getModelObject().getId() != null ? getModelObject().getId() : 0;
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> f) {
- setModelObject(new Group());
- updateView(target);
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- Group org = getModelObject();
- if (org.getId() != null) {
- org = getBean(GroupDao.class).get(org.getId());
- } else {
- org = new Group();
- }
- setModelObject(org);
- updateView(target);
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- getBean(GroupDao.class).delete(getModelObject(), getUserId());
- setModelObject(new Group());
- updateView(target);
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- Group o = getModelObject();
- o = getBean(GroupDao.class).update(o, getUserId());
- setModelObject(o);
- for (GroupUser grpUser : usersPanel.getUsers2add()) {
- GroupUsersPanel.update(grpUser);
- }
- hideNewRecord();
- updateView(target);
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.groups;
+
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
+import static org.apache.openmeetings.util.OmFileHelper.getGroupLogo;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl;
+
+import java.io.File;
+
+import org.apache.openmeetings.core.converter.ImageConverter;
+import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.dao.user.GroupUserDao;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.StoredFile;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
+import org.apache.openmeetings.web.common.UploadableImagePanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.NumberTextField;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+import org.wicketstuff.select2.Select2Choice;
+
+public class GroupForm extends AdminBaseForm<Group> {
+ private static final long serialVersionUID = 1L;
+ private GroupUsersPanel usersPanel;
+ private final WebMarkupContainer groupList;
+ private final Select2Choice<User> userToadd;
+ private final NumberTextField<Integer> maxFilesSize = new NumberTextField<>("maxFilesSize");
+ private final NumberTextField<Integer> maxRecordingsSize = new NumberTextField<>("maxRecordingsSize");
+ private final NumberTextField<Integer> maxRooms = new NumberTextField<>("maxRooms");
+ private final NumberTextField<Integer> recordingTtl = new NumberTextField<>("recordingTtl");
+ private final NumberTextField<Integer> reminderDays = new NumberTextField<>("reminderDays");
+ private final UploadableImagePanel logo = new UploadableImagePanel("logo") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected String getImageUrl() {
+ return getUrl(getRequestCycle(), GroupForm.this.getModelObject().getId());
+ }
+
+ @Override
+ protected void processImage(StoredFile sf, File f) throws Exception {
+ getBean(ImageConverter.class).resize(f, getGroupLogo(GroupForm.this.getModelObject().getId(), false), null, 28);
+ }
+
+ @Override
+ protected String getTitle() {
+ return getString("admin.group.form.logo");
+ }
+ };
+
+ static String formatUser(User choice) {
+ return String.format("%s [%s %s]", choice.getLogin(), choice.getFirstname(), choice.getLastname());
+ }
+
+ public GroupForm(String id, WebMarkupContainer groupList, Group group) {
+ super(id, new CompoundPropertyModel<>(group));
+ this.groupList = groupList;
+ setOutputMarkupId(true);
+
+ usersPanel = new GroupUsersPanel("users", getGroupId());
+ add(usersPanel);
+
+ add(userToadd = new Select2Choice<>("user2add", Model.of((User)null), new AdminUserChoiceProvider() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getDisplayValue(User choice) {
+ return formatUser(choice);
+ }
+ }));
+ userToadd.add(new AjaxFormComponentUpdatingBehavior("change") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ Group o = GroupForm.this.getModelObject();
+ User u = userToadd.getModelObject();
+ boolean found = false;
+ if (o.getId() != null) {
+ found = null != getBean(GroupUserDao.class).getByGroupAndUser(o.getId(), u.getId());
+ }
+ if (!found && u != null) {
+ for (GroupUser ou : usersPanel.getUsers2add()) {
+ if (ou.getUser().getId().equals(u.getId())) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ GroupUser ou = new GroupUser(o, u);
+ usersPanel.getUsers2add().add(ou);
+
+ userToadd.setModelObject(null);
+ target.add(usersPanel, userToadd);
+ }
+ }
+ }
+ });
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+
+ @Override
+ protected boolean isNewBtnVisible() {
+ return !hasGroupAdminLevel(getRights());
+ }
+
+ @Override
+ protected boolean isDelBtnVisible() {
+ return !hasGroupAdminLevel(getRights());
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ final boolean isGroupAdmin = hasGroupAdminLevel(getRights());
+ userToadd.setEnabled(!isGroupAdmin);
+ add(new RequiredTextField<String>("name").setLabel(Model.of(getString("165"))));
+ add(logo);
+ add(new TextField<String>("tag").setLabel(Model.of(getString("admin.group.form.tag"))));
+ add(new CheckBox("restricted").setLabel(Model.of(getString("restricted.group.files"))));
+ add(new AjaxCheckBox("limited") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ target.add(
+ maxFilesSize.setEnabled(getModelObject())
+ , maxRecordingsSize.setEnabled(getModelObject())
+ , maxRooms.setEnabled(getModelObject())
+ , recordingTtl.setEnabled(getModelObject())
+ , reminderDays.setEnabled(getModelObject())
+ );
+ }
+ }.setLabel(Model.of(getString("admin.group.form.limited"))));
+ add(maxFilesSize.setLabel(Model.of(getString("admin.group.form.maxFilesSize"))).setEnabled(false).setOutputMarkupId(true));
+ add(maxRecordingsSize.setLabel(Model.of(getString("admin.group.form.maxRecordingsSize"))).setEnabled(false).setOutputMarkupId(true));
+ add(maxRooms.setLabel(Model.of(getString("admin.group.form.maxRooms"))).setEnabled(false).setOutputMarkupId(true));
+ add(recordingTtl.setLabel(Model.of(getString("admin.group.form.recordingTtl"))).setEnabled(false).setOutputMarkupId(true));
+ add(reminderDays.setLabel(Model.of(getString("admin.group.form.reminderDays"))).setEnabled(false).setOutputMarkupId(true));
+ }
+
+ public void updateView(AjaxRequestTarget target) {
+ userToadd.setModelObject(null);
+ usersPanel.update(getGroupId());
+ maxFilesSize.setEnabled(getModelObject().isLimited());
+ maxRecordingsSize.setEnabled(getModelObject().isLimited());
+ maxRooms.setEnabled(getModelObject().isLimited());
+ recordingTtl.setEnabled(getModelObject().isLimited());
+ reminderDays.setEnabled(getModelObject().isLimited());
+ logo.update();
+ target.add(this, groupList);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ private long getGroupId() {
+ return getModelObject().getId() != null ? getModelObject().getId() : 0;
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> f) {
+ setModelObject(new Group());
+ updateView(target);
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ Group org = getModelObject();
+ if (org.getId() != null) {
+ org = getBean(GroupDao.class).get(org.getId());
+ } else {
+ org = new Group();
+ }
+ setModelObject(org);
+ updateView(target);
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ getBean(GroupDao.class).delete(getModelObject(), getUserId());
+ setModelObject(new Group());
+ updateView(target);
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ Group o = getModelObject();
+ o = getBean(GroupDao.class).update(o, getUserId());
+ setModelObject(o);
+ for (GroupUser grpUser : usersPanel.getUsers2add()) {
+ GroupUsersPanel.update(grpUser);
+ }
+ hideNewRecord();
+ updateView(target);
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
index 11bce13..3381830 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
@@ -1,45 +1,45 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div class="usergroupspanel">
- <span wicket:id="navigator">[dataview navigator]</span>
- <table class="adminListTable" style="min-width: 440px; max-width: 440px" >
- <tr>
- <th class="ui-widget-header" style="width: 34px; max-width: 34px; overflow: hidden;" wicket:message="title:98"><wicket:message key="98" /></th>
- <th class="ui-widget-header" style="width: 360px"><wicket:message key="177" /></th>
- <th class="ui-widget-header" style="width: 34px"><wicket:message key="275" /></th>
- </tr>
- </table>
- <div class="tableWrapper" style="width: 460px; height: 250px;">
- <table class="adminListTable" style="min-width: 440px; max-width: 440px">
- <tbody>
- <tr wicket:id="userList" class="ui-widget-content">
- <td style="width: 34px"><input type="checkbox" wicket:id="isModerator"/></td>
- <td style="width: 360px"><div style="width: 360px"><span wicket:id="label"></span></div></td>
- <td style="width: 34px"><div style="width: 34px"><div class="formCancelButton" wicket:id="deleteUserBtn" wicket:message="title:274"></div></div></td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div class="usergroupspanel">
+ <span wicket:id="navigator">[dataview navigator]</span>
+ <table class="adminListTable" style="min-width: 440px; max-width: 440px" >
+ <tr>
+ <th class="ui-widget-header" style="width: 34px; max-width: 34px; overflow: hidden;" wicket:message="title:98"><wicket:message key="98" /></th>
+ <th class="ui-widget-header" style="width: 360px"><wicket:message key="177" /></th>
+ <th class="ui-widget-header" style="width: 34px"><wicket:message key="275" /></th>
+ </tr>
+ </table>
+ <div class="tableWrapper" style="width: 460px; height: 250px;">
+ <table class="adminListTable" style="min-width: 440px; max-width: 440px">
+ <tbody>
+ <tr wicket:id="userList" class="ui-widget-content">
+ <td style="width: 34px"><input type="checkbox" wicket:id="isModerator"/></td>
+ <td style="width: 360px"><div style="width: 360px"><span wicket:id="label"></span></div></td>
+ <td style="width: 34px"><div style="width: 34px"><div class="formCancelButton" wicket:id="deleteUserBtn" wicket:message="title:274"></div></div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </wicket:panel>
+</html>
[11/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/red5sip-integration_2.0.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/red5sip-integration_2.0.xml b/openmeetings-server/src/site/xdoc/red5sip-integration_2.0.xml
index 1e1d606..e3b0660 100644
--- a/openmeetings-server/src/site/xdoc/red5sip-integration_2.0.xml
+++ b/openmeetings-server/src/site/xdoc/red5sip-integration_2.0.xml
@@ -1,179 +1,179 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>SIP-Transport Integration</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="SIP-Transport Integration">
- <p>
- You need minimum version 2.0 of Apache OpenMeetings to apply this guide!
- </p>
- <p>
- Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 10.04.
- </p>
- </section>
-
- <section name="Setup Asterisk">
- <div>
- Run the commands
- <source>
-<![CDATA[
-sudo apt-get update
-sudo apt-get install asterisk asterisk-mysql
-]]>
- </source>
- </div>
- <div>
- Ubuntu 10.04 has broken asterisk-mysql version. For other distribution next commands not needed:
- <source>
-<![CDATA[
-aptitude purge asterisk-mysql
-cd /tmp
-apt-get build-dep asterisk-mysql
-apt-get -b source asterisk-mysql
-dpkg -i asterisk-mysql_1.6.2.0-1_i386.deb
-]]>
- </source>
- </div>
- <div>
- Enable asterisk mysql realtime module:<br/><br/>
- Add string
- <source>
-<![CDATA[
-load => res_config_mysql.so
-]]>
- </source>
- to the /etc/asterisk/modules.conf into the "modules" section.
- </div>
- <div>
- Configure mysql realtime module:<br/><br/>
-
- Create file /etc/asterisk/res_mysql.conf and add lines:
- <source>
-<![CDATA[
-[general]
-dbhost=127.0.0.1
-dbname=openmeetings
-dbuser=root
-dbpass=
-dbport=3306
-]]>
- </source>
- </div>
- <div>
- Add next lines into the /etc/asterisk/extconfig.conf:
- <source>
-<![CDATA[
-[settings]
-sipusers => mysql,general,sipusers
-sippeers => mysql,general,sipusers
-extensions => mysql,general,extensions
-meetme => mysql,general,meetme
-]]>
- </source>
- </div>
- <div>
- Add next lines into the /etc/asterisk/extensions.conf:
- <source>
-<![CDATA[
-[rooms]
-switch => Realtime/@
-]]>
- </source>
- </div>
-
- <div>
- Restart asterisk:
- <source>
-<![CDATA[
-service asterisk restart
-]]>
- </source>
- Insert, for example, SIP user with name 'test':
- <source>
-<![CDATA[
-INSERT INTO sipusers (allow, context, disallow, host, name, secret) VALUES ('ulaw' , 'rooms', NULL, 'dynamic' , 'test', '12345');
-]]>
- </source>
- </div>
- </section>
-
- <section name="Setup red5sip transport">
- <div>
- Download red5sip from<tt>http://red5phone.googlecode.com/svn/branches/red5sip</tt>
- </div>
- <p>
- Build with Apache Ant
- </p>
- <div>
- Install jsvc:
- <source>
-<![CDATA[
-apt-get install jsvc
-]]>
- </source>
- </div>
- <div>
- Insert proper values to the /opt/red5sip/settings.properties
-
- <source>
-<![CDATA[
-red5.host - red5 server address (127.0.0.1)
-sip.obproxy - asterisk adderss (127.0.0.1)
-sip.phone - sip phone number (test)
-sip.authid - sip auth id (test)
-sip.secret - sip password (12345)
-sip.realm - sip realm, "asterisk" by default
-sip.proxy -
-rooms - ids of openmeetings rooms, can be, for example, 2,3,5,6
-]]>
- </source>
- </div>
- <div>
- Add red5sip to autostart:
- <source>
-<![CDATA[
-ln -s /opt/red5sip/red5sip.sh /etc/init.d/red5sip
-chmod a+x /etc/init.d/red5sip
-update-rc.d /etc/init.d/red5sip defaults
-]]>
- </source>
- </div>
- <div>
- Start openmeetings
- <source>
-<![CDATA[
-service red5 start
-]]>
- </source>
- </div>
- <div>
- Start red5sip
- <source>
-<![CDATA[
-service red5sip start
-]]>
- </source>
- </div>
- </section>
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>SIP-Transport Integration</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="SIP-Transport Integration">
+ <p>
+ You need minimum version 2.0 of Apache OpenMeetings to apply this guide!
+ </p>
+ <p>
+ Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 10.04.
+ </p>
+ </section>
+
+ <section name="Setup Asterisk">
+ <div>
+ Run the commands
+ <source>
+<![CDATA[
+sudo apt-get update
+sudo apt-get install asterisk asterisk-mysql
+]]>
+ </source>
+ </div>
+ <div>
+ Ubuntu 10.04 has broken asterisk-mysql version. For other distribution next commands not needed:
+ <source>
+<![CDATA[
+aptitude purge asterisk-mysql
+cd /tmp
+apt-get build-dep asterisk-mysql
+apt-get -b source asterisk-mysql
+dpkg -i asterisk-mysql_1.6.2.0-1_i386.deb
+]]>
+ </source>
+ </div>
+ <div>
+ Enable asterisk mysql realtime module:<br/><br/>
+ Add string
+ <source>
+<![CDATA[
+load => res_config_mysql.so
+]]>
+ </source>
+ to the /etc/asterisk/modules.conf into the "modules" section.
+ </div>
+ <div>
+ Configure mysql realtime module:<br/><br/>
+
+ Create file /etc/asterisk/res_mysql.conf and add lines:
+ <source>
+<![CDATA[
+[general]
+dbhost=127.0.0.1
+dbname=openmeetings
+dbuser=root
+dbpass=
+dbport=3306
+]]>
+ </source>
+ </div>
+ <div>
+ Add next lines into the /etc/asterisk/extconfig.conf:
+ <source>
+<![CDATA[
+[settings]
+sipusers => mysql,general,sipusers
+sippeers => mysql,general,sipusers
+extensions => mysql,general,extensions
+meetme => mysql,general,meetme
+]]>
+ </source>
+ </div>
+ <div>
+ Add next lines into the /etc/asterisk/extensions.conf:
+ <source>
+<![CDATA[
+[rooms]
+switch => Realtime/@
+]]>
+ </source>
+ </div>
+
+ <div>
+ Restart asterisk:
+ <source>
+<![CDATA[
+service asterisk restart
+]]>
+ </source>
+ Insert, for example, SIP user with name 'test':
+ <source>
+<![CDATA[
+INSERT INTO sipusers (allow, context, disallow, host, name, secret) VALUES ('ulaw' , 'rooms', NULL, 'dynamic' , 'test', '12345');
+]]>
+ </source>
+ </div>
+ </section>
+
+ <section name="Setup red5sip transport">
+ <div>
+ Download red5sip from<tt>http://red5phone.googlecode.com/svn/branches/red5sip</tt>
+ </div>
+ <p>
+ Build with Apache Ant
+ </p>
+ <div>
+ Install jsvc:
+ <source>
+<![CDATA[
+apt-get install jsvc
+]]>
+ </source>
+ </div>
+ <div>
+ Insert proper values to the /opt/red5sip/settings.properties
+
+ <source>
+<![CDATA[
+red5.host - red5 server address (127.0.0.1)
+sip.obproxy - asterisk adderss (127.0.0.1)
+sip.phone - sip phone number (test)
+sip.authid - sip auth id (test)
+sip.secret - sip password (12345)
+sip.realm - sip realm, "asterisk" by default
+sip.proxy -
+rooms - ids of openmeetings rooms, can be, for example, 2,3,5,6
+]]>
+ </source>
+ </div>
+ <div>
+ Add red5sip to autostart:
+ <source>
+<![CDATA[
+ln -s /opt/red5sip/red5sip.sh /etc/init.d/red5sip
+chmod a+x /etc/init.d/red5sip
+update-rc.d /etc/init.d/red5sip defaults
+]]>
+ </source>
+ </div>
+ <div>
+ Start openmeetings
+ <source>
+<![CDATA[
+service red5 start
+]]>
+ </source>
+ </div>
+ <div>
+ Start red5sip
+ <source>
+<![CDATA[
+service red5sip start
+]]>
+ </source>
+ </div>
+ </section>
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/themes-and-branding.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/themes-and-branding.xml b/openmeetings-server/src/site/xdoc/themes-and-branding.xml
index ac73b29..fb27844 100644
--- a/openmeetings-server/src/site/xdoc/themes-and-branding.xml
+++ b/openmeetings-server/src/site/xdoc/themes-and-branding.xml
@@ -1,61 +1,61 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Theme and color</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="Available since Apache OpenMeetings 2.0">
- <p>
- Themes are only available starting with Openmeetings 2.x.
- <br />
- There are also more general client side configuration like port
- configuration. Those configs are stored in the public/config.xml
- </p>
- </section>
- <section name="Editing the theme">
- <p>To modify default theme used by OM</p>
- <ul>
- <li>please open following file in the Git:<br/>
- <a
- href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css;hb=HEAD"
- target="_blank" rel="nofollow">https://git-wip-us.apache.org/repos/asf/openmeetings.git/?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css;hb=HEAD
- </a><br/>
- Or if you already installed OpenMeetings on your machine at:<br />
- <tt>/webapps/openmeetings/css/theme_om/jquery-ui.css</tt>
- </li>
- <li>follow the link next to "To view and modify this theme, visit" text in css comments</li>
- </ul>
- <p>
- The file contains border, background and font color definitions as
- well as paths to icons that are loaded at runtime.
- <br />
- You can change the theme at runtime and just reload the browser
- (eventually clear the browser cache) to see updates based on
- modification in your theme.
- </p>
- <p>All other elements might be styled by modifying CSS files in <tt>/webapps/openmeetings/css</tt> folder</p>
- </section>
- <section name="Creating custom CSS file">
- <ol>
- <li>create <tt>webapps/openmeetings/css/custom.css</tt> file</li>
- <li>open <tt>webapps/openmeetings/WEB-INF/classes/org/apache/openmeetings/web/pages/BasePage.html</tt> add link to your new CSS file (as last link)</li>
- </ol>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Theme and color</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="Available since Apache OpenMeetings 2.0">
+ <p>
+ Themes are only available starting with Openmeetings 2.x.
+ <br />
+ There are also more general client side configuration like port
+ configuration. Those configs are stored in the public/config.xml
+ </p>
+ </section>
+ <section name="Editing the theme">
+ <p>To modify default theme used by OM</p>
+ <ul>
+ <li>please open following file in the Git:<br/>
+ <a
+ href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css;hb=HEAD"
+ target="_blank" rel="nofollow">https://git-wip-us.apache.org/repos/asf/openmeetings.git/?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css;hb=HEAD
+ </a><br/>
+ Or if you already installed OpenMeetings on your machine at:<br />
+ <tt>/webapps/openmeetings/css/theme_om/jquery-ui.css</tt>
+ </li>
+ <li>follow the link next to "To view and modify this theme, visit" text in css comments</li>
+ </ul>
+ <p>
+ The file contains border, background and font color definitions as
+ well as paths to icons that are loaded at runtime.
+ <br />
+ You can change the theme at runtime and just reload the browser
+ (eventually clear the browser cache) to see updates based on
+ modification in your theme.
+ </p>
+ <p>All other elements might be styled by modifying CSS files in <tt>/webapps/openmeetings/css</tt> folder</p>
+ </section>
+ <section name="Creating custom CSS file">
+ <ol>
+ <li>create <tt>webapps/openmeetings/css/custom.css</tt> file</li>
+ <li>open <tt>webapps/openmeetings/WEB-INF/classes/org/apache/openmeetings/web/pages/BasePage.html</tt> add link to your new CSS file (as last link)</li>
+ </ol>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/voip-sip-integration.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/voip-sip-integration.xml b/openmeetings-server/src/site/xdoc/voip-sip-integration.xml
index 9369ee7..56361cb 100644
--- a/openmeetings-server/src/site/xdoc/voip-sip-integration.xml
+++ b/openmeetings-server/src/site/xdoc/voip-sip-integration.xml
@@ -1,69 +1,69 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>VoIP and SIP Integration</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="VoIP and SIP Integration">
-
- <p>
- There are multiple ways to integrate with VoIP and or SIP.
- OpenMeetings does not provide out of the box a ready to run VoIP
- integration / integration to cell phone or usual land lane.
- The
- nature of such integrations is that it depends heavily on the
- infrastructure that you are using and where you would like to
- integrate OpenMeetings into.
- <br />
- <br />
- It also depends on a number of factors of which OpenMeetings is
- impossible to set up for you, for example setting up your VoIP
- server or provide you with a range of telephone numbers reserved for
- conference calls in your national phone network.
- Such an integration
- project is likely to become a consulting job for a
- telecommunications consultant.
- <br />
- <br />
- To get help on the integration you can contact the
- <a href="mail-lists.html">mailing lists</a>
- or for example somebody from the list of
- <a href="commercial-support.html">commercial support</a>
- .
- <br/><br/>
- <a href="red5sip-integration_2.0.html">
- Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 2.0
- </a>.<br/>
- <a href="red5sip-integration_2.1.html">
- Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 2.1
- </a>.<br/>
- <a href="red5sip-integration_3.0.html">
- Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 3.0
- </a>.<br/>
- <a href="red5sip-integration_3.1.html">
- Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 3.1+
- </a>.<br/>
- </p>
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>VoIP and SIP Integration</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="VoIP and SIP Integration">
+
+ <p>
+ There are multiple ways to integrate with VoIP and or SIP.
+ OpenMeetings does not provide out of the box a ready to run VoIP
+ integration / integration to cell phone or usual land lane.
+ The
+ nature of such integrations is that it depends heavily on the
+ infrastructure that you are using and where you would like to
+ integrate OpenMeetings into.
+ <br />
+ <br />
+ It also depends on a number of factors of which OpenMeetings is
+ impossible to set up for you, for example setting up your VoIP
+ server or provide you with a range of telephone numbers reserved for
+ conference calls in your national phone network.
+ Such an integration
+ project is likely to become a consulting job for a
+ telecommunications consultant.
+ <br />
+ <br />
+ To get help on the integration you can contact the
+ <a href="mail-lists.html">mailing lists</a>
+ or for example somebody from the list of
+ <a href="commercial-support.html">commercial support</a>
+ .
+ <br/><br/>
+ <a href="red5sip-integration_2.0.html">
+ Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 2.0
+ </a>.<br/>
+ <a href="red5sip-integration_2.1.html">
+ Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 2.1
+ </a>.<br/>
+ <a href="red5sip-integration_3.0.html">
+ Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 3.0
+ </a>.<br/>
+ <a href="red5sip-integration_3.1.html">
+ Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 3.1+
+ </a>.<br/>
+ </p>
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
----------------------------------------------------------------------
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
index 400cb83..5dbdd2b 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
@@ -1,179 +1,179 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.service.quartz.scheduler;
-
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
-import static org.apache.openmeetings.util.OmFileHelper.TEST_SETUP_PREFIX;
-import static org.apache.openmeetings.util.OmFileHelper.getStreamsDir;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.util.Map;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
-import org.apache.openmeetings.core.session.SessionManager;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dto.room.Whiteboard;
-import org.apache.openmeetings.db.dto.room.Whiteboards;
-import org.apache.openmeetings.util.InitializationContainer;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class CleanupJob extends AbstractJob {
- private static Logger log = Red5LoggerFactory.getLogger(CleanupJob.class, webAppRootKey);
- private long sessionTimeout = 30 * 60 * 1000L;
- private long testSetupTimeout = 60 * 60 * 1000L; // 1 hour
- private long roomFilesTtl = 60 * 60 * 1000L; // 1 hour
-
- @Autowired
- private SessiondataDao sessionDao;
- @Autowired
- private SessionManager sessionManager;
- @Autowired
- private WhiteboardCache wbManager;
-
- public long getSessionTimeout() {
- return sessionTimeout;
- }
-
- public void setSessionTimeout(long sessionTimeout) {
- this.sessionTimeout = sessionTimeout;
- }
-
- public long getTestSetupTimeout() {
- return testSetupTimeout;
- }
-
- public void setTestSetupTimeout(long testSetupTimeout) {
- this.testSetupTimeout = testSetupTimeout;
- }
-
- public long getRoomFilesTtl() {
- return roomFilesTtl;
- }
-
- public void setRoomFilesTtl(long roomFilesTtl) {
- this.roomFilesTtl = roomFilesTtl;
- }
-
- public void cleanTestSetup() {
- log.debug("CleanupJob.cleanTestSetup");
- if (!InitializationContainer.initComplete) {
- return;
- }
- try {
- //FIXME need to move all these staff to helper
- File[] folders = getStreamsDir().listFiles();
- if (folders != null) {
- for (File folder : folders) {
- if (folder.isDirectory()) {
- File[] files = folder.listFiles(new FileFilter() {
- @Override
- public boolean accept(File file) {
- return file.getName().startsWith(TEST_SETUP_PREFIX);
- }
- });
- if (files != null) {
- for (File file : files) {
- if (file.isFile() && file.lastModified() + testSetupTimeout < System.currentTimeMillis()) {
- log.debug("expired TEST SETUP found: " + file.getCanonicalPath());
- file.delete();
- }
- }
- }
- }
- }
- }
- } catch (Exception e) {
- log.error("Unexpected exception while processing tests setup videous.", e);
- }
- }
-
- public void cleanRoomFiles() {
- log.debug("CleanupJob.cleanRoomFiles");
- if (!InitializationContainer.initComplete) {
- return;
- }
- try {
- //FIXME need to move all these staff to helper
- File[] folders = getStreamsDir().listFiles();
- if (folders != null) {
- for (File folder : folders) {
- Long roomId = null;
- if (NumberUtils.isCreatable(folder.getName())) {
- roomId = Long.valueOf(folder.getName());
- Whiteboards wbList = wbManager.get(roomId);
- for (Map.Entry<Long, Whiteboard> e : wbList.getWhiteboards().entrySet()) {
- if (!e.getValue().getRoomItems().isEmpty()) {
- roomId = null;
- break;
- }
- }
- }
- if (folder.isDirectory() && roomId != null && sessionManager.getClientListByRoom(roomId).isEmpty()) {
- File[] files = folder.listFiles();
- //TODO need to rework this and remove hardcodings
- if (files != null) {
- for (File file : files) {
- if (file.isFile() && file.lastModified() + roomFilesTtl < System.currentTimeMillis()) {
- log.debug("Room files are too old and no users in the room: " + roomId);
- FileUtils.deleteDirectory(folder);
- break;
- }
- }
- }
- }
- }
- }
- } catch (Exception e) {
- log.error("Unexpected exception while processing tests setup videous.", e);
- }
- }
-
- public void cleanSessions() {
- log.trace("CleanupJob.cleanSessions");
- if (!InitializationContainer.initComplete) {
- return;
- }
- try {
- // TODO Generate report
- sessionDao.clearSessionTable(sessionTimeout);
- } catch (Exception err){
- log.error("execute",err);
- }
- }
-
- public void cleanExpiredRecordings() {
- log.debug("CleanupJob.cleanExpiredRecordings");
- processExpiringRecordings(true, (rec, days) -> {
- if (days < 0) {
- log.debug("cleanExpiredRecordings:: following recording will be deleted {}", rec);
- File f = rec.getFile(EXTENSION_MP4);
- if (f != null && f.exists()) {
- f.delete();
- }
- recordingDao.delete(rec);
- }
- });
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.service.quartz.scheduler;
+
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
+import static org.apache.openmeetings.util.OmFileHelper.TEST_SETUP_PREFIX;
+import static org.apache.openmeetings.util.OmFileHelper.getStreamsDir;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.Map;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
+import org.apache.openmeetings.core.session.SessionManager;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dto.room.Whiteboard;
+import org.apache.openmeetings.db.dto.room.Whiteboards;
+import org.apache.openmeetings.util.InitializationContainer;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class CleanupJob extends AbstractJob {
+ private static Logger log = Red5LoggerFactory.getLogger(CleanupJob.class, webAppRootKey);
+ private long sessionTimeout = 30 * 60 * 1000L;
+ private long testSetupTimeout = 60 * 60 * 1000L; // 1 hour
+ private long roomFilesTtl = 60 * 60 * 1000L; // 1 hour
+
+ @Autowired
+ private SessiondataDao sessionDao;
+ @Autowired
+ private SessionManager sessionManager;
+ @Autowired
+ private WhiteboardCache wbManager;
+
+ public long getSessionTimeout() {
+ return sessionTimeout;
+ }
+
+ public void setSessionTimeout(long sessionTimeout) {
+ this.sessionTimeout = sessionTimeout;
+ }
+
+ public long getTestSetupTimeout() {
+ return testSetupTimeout;
+ }
+
+ public void setTestSetupTimeout(long testSetupTimeout) {
+ this.testSetupTimeout = testSetupTimeout;
+ }
+
+ public long getRoomFilesTtl() {
+ return roomFilesTtl;
+ }
+
+ public void setRoomFilesTtl(long roomFilesTtl) {
+ this.roomFilesTtl = roomFilesTtl;
+ }
+
+ public void cleanTestSetup() {
+ log.debug("CleanupJob.cleanTestSetup");
+ if (!InitializationContainer.initComplete) {
+ return;
+ }
+ try {
+ //FIXME need to move all these staff to helper
+ File[] folders = getStreamsDir().listFiles();
+ if (folders != null) {
+ for (File folder : folders) {
+ if (folder.isDirectory()) {
+ File[] files = folder.listFiles(new FileFilter() {
+ @Override
+ public boolean accept(File file) {
+ return file.getName().startsWith(TEST_SETUP_PREFIX);
+ }
+ });
+ if (files != null) {
+ for (File file : files) {
+ if (file.isFile() && file.lastModified() + testSetupTimeout < System.currentTimeMillis()) {
+ log.debug("expired TEST SETUP found: " + file.getCanonicalPath());
+ file.delete();
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("Unexpected exception while processing tests setup videous.", e);
+ }
+ }
+
+ public void cleanRoomFiles() {
+ log.debug("CleanupJob.cleanRoomFiles");
+ if (!InitializationContainer.initComplete) {
+ return;
+ }
+ try {
+ //FIXME need to move all these staff to helper
+ File[] folders = getStreamsDir().listFiles();
+ if (folders != null) {
+ for (File folder : folders) {
+ Long roomId = null;
+ if (NumberUtils.isCreatable(folder.getName())) {
+ roomId = Long.valueOf(folder.getName());
+ Whiteboards wbList = wbManager.get(roomId);
+ for (Map.Entry<Long, Whiteboard> e : wbList.getWhiteboards().entrySet()) {
+ if (!e.getValue().getRoomItems().isEmpty()) {
+ roomId = null;
+ break;
+ }
+ }
+ }
+ if (folder.isDirectory() && roomId != null && sessionManager.getClientListByRoom(roomId).isEmpty()) {
+ File[] files = folder.listFiles();
+ //TODO need to rework this and remove hardcodings
+ if (files != null) {
+ for (File file : files) {
+ if (file.isFile() && file.lastModified() + roomFilesTtl < System.currentTimeMillis()) {
+ log.debug("Room files are too old and no users in the room: " + roomId);
+ FileUtils.deleteDirectory(folder);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("Unexpected exception while processing tests setup videous.", e);
+ }
+ }
+
+ public void cleanSessions() {
+ log.trace("CleanupJob.cleanSessions");
+ if (!InitializationContainer.initComplete) {
+ return;
+ }
+ try {
+ // TODO Generate report
+ sessionDao.clearSessionTable(sessionTimeout);
+ } catch (Exception err){
+ log.error("execute",err);
+ }
+ }
+
+ public void cleanExpiredRecordings() {
+ log.debug("CleanupJob.cleanExpiredRecordings");
+ processExpiringRecordings(true, (rec, days) -> {
+ if (days < 0) {
+ log.debug("cleanExpiredRecordings:: following recording will be deleted {}", rec);
+ File f = rec.getFile(EXTENSION_MP4);
+ if (f != null && f.exists()) {
+ f.delete();
+ }
+ recordingDao.delete(rec);
+ }
+ });
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-service/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-service/src/site/site.xml b/openmeetings-service/src/site/site.xml
index c26954e..0d9f35c 100644
--- a/openmeetings-service/src/site/site.xml
+++ b/openmeetings-service/src/site/site.xml
@@ -1,40 +1,40 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu ref="parent"/>
- <menu name="Project">
- <item name="About" href="/index.html" />
- <item name="Info" href="/project-info.html" />
- <item name="Summary" href="/project-summary.html" />
- <item name="License" href="/license.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Dependency Convergence" href="/dependency-convergence.html" />
- <item name="RAT Report" href="/rat-report.html" />
- <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <bottomNav maxSpan="12">
- <column>Parent Project</column>
- <column>Project</column>
- </bottomNav>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu ref="parent"/>
+ <menu name="Project">
+ <item name="About" href="/index.html" />
+ <item name="Info" href="/project-info.html" />
+ <item name="Summary" href="/project-summary.html" />
+ <item name="License" href="/license.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Dependency Convergence" href="/dependency-convergence.html" />
+ <item name="RAT Report" href="/rat-report.html" />
+ <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <bottomNav maxSpan="12">
+ <column>Parent Project</column>
+ <column>Project</column>
+ </bottomNav>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-util/src/main/java/org/apache/openmeetings/util/ConnectionProperties.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/ConnectionProperties.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/ConnectionProperties.java
index 1f184ef..cbf799e 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/ConnectionProperties.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/ConnectionProperties.java
@@ -1,86 +1,86 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.util;
-
-import java.io.Serializable;
-
-public class ConnectionProperties implements Serializable {
- private static final long serialVersionUID = 1L;
-
- public enum DbType {
- db2
- , derby
- , mssql
- , mysql
- , oracle
- , postgresql
- }
-
- private String driver = "org.apache.derby.jdbc.EmbeddedDriver";
- private String url = "jdbc:derby:openmeetings";
- private String login = "user";
- private String password = "secret";
- private DbType dbType = DbType.derby;
-
- public String getDriver() {
- return driver;
- }
-
- public void setDriver(String driverName) {
- this.driver = driverName;
- }
-
- public String getURL() {
- return url;
- }
-
- public void setURL(String connectionURL) {
- this.url = connectionURL;
- }
-
- public String getLogin() {
- return login;
- }
-
- public void setLogin(String connectionLogin) {
- this.login = connectionLogin;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String connectionPass) {
- this.password = connectionPass;
- }
-
- public DbType getDbType() {
- return dbType;
- }
-
- public void setDbType(DbType dbType) {
- this.dbType = dbType;
- }
-
- @Override
- public String toString() {
- return "ConnectionProperties [type=" + dbType + ", driver=" + driver + ", url=" + url
- + ", login=" + login + ", password=" + password + "]";
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.util;
+
+import java.io.Serializable;
+
+public class ConnectionProperties implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ public enum DbType {
+ db2
+ , derby
+ , mssql
+ , mysql
+ , oracle
+ , postgresql
+ }
+
+ private String driver = "org.apache.derby.jdbc.EmbeddedDriver";
+ private String url = "jdbc:derby:openmeetings";
+ private String login = "user";
+ private String password = "secret";
+ private DbType dbType = DbType.derby;
+
+ public String getDriver() {
+ return driver;
+ }
+
+ public void setDriver(String driverName) {
+ this.driver = driverName;
+ }
+
+ public String getURL() {
+ return url;
+ }
+
+ public void setURL(String connectionURL) {
+ this.url = connectionURL;
+ }
+
+ public String getLogin() {
+ return login;
+ }
+
+ public void setLogin(String connectionLogin) {
+ this.login = connectionLogin;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String connectionPass) {
+ this.password = connectionPass;
+ }
+
+ public DbType getDbType() {
+ return dbType;
+ }
+
+ public void setDbType(DbType dbType) {
+ this.dbType = dbType;
+ }
+
+ @Override
+ public String toString() {
+ return "ConnectionProperties [type=" + dbType + ", driver=" + driver + ", url=" + url
+ + ", login=" + login + ", password=" + password + "]";
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-util/src/main/java/org/apache/openmeetings/util/DaoHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/DaoHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/DaoHelper.java
index 14e2f33..688bb19 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/DaoHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/DaoHelper.java
@@ -1,107 +1,107 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.util;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.wicket.util.string.Strings;
-
-public class DaoHelper {
-
- public static String getSearchQuery(String table, String alias, String search, boolean filterDeleted, boolean count, String sort, String... fields) {
- return getSearchQuery(table, alias, search, false, filterDeleted, count, sort, fields);
- }
- public static String getSearchQuery(String table, String alias, String search, boolean distinct, boolean filterDeleted, boolean count, String sort, String... fields) {
- return getSearchQuery(table, alias, null, search, distinct, filterDeleted, count, null, sort, fields);
- }
-
- public static String getSearchQuery(String table, String alias, String join, String search, boolean filterDeleted, boolean count, String additionalWhere, String sort, String... fields) {
- return getSearchQuery(table, alias, join, search, false, filterDeleted, count, additionalWhere, sort, fields);
- }
-
- public static String getSearchQuery(String table, String alias, String join, String search, boolean distinct, boolean filterDeleted, boolean count, String additionalWhere, String sort, String... fields) {
- StringBuilder sb = new StringBuilder("SELECT ");
- if (count) {
- sb.append("COUNT(");
- }
- if (distinct) {
- sb.append("DISTINCT ");
- }
- sb.append(alias);
- if (count) {
- sb.append(")");
- }
- sb.append(" FROM ").append(table).append(" ").append(alias);
- if (!Strings.isEmpty(join)) {
- sb.append(" ").append(join);
- }
- sb.append(" WHERE 1 = 1 ");
- if (filterDeleted) {
- sb.append("AND ").append(alias).append(".deleted = false ");
- }
- StringBuilder where = getWhereClause(search, alias, fields);
- if (!Strings.isEmpty(where)) {
- sb.append("AND ").append(where);
- }
- if (!Strings.isEmpty(additionalWhere)) {
- sb.append("AND ").append(additionalWhere);
- }
- if (!Strings.isEmpty(sort)) {
- sb.append(" ORDER BY ").append(alias).append(".").append(sort);
- }
- return sb.toString();
- }
-
- public static StringBuilder getWhereClause(String search, String alias, String... fields) {
- StringBuilder sb = new StringBuilder();
- getWhereClause(sb, search, alias, fields);
- return sb;
- }
-
- public static void getWhereClause(StringBuilder sb, String search, String alias, String... fields) {
- if (search != null) {
- boolean notEmpty = false;
- String[] searchItems = search.replace("\'", "").replace("\"", "").split(" ");
- for (int i = 0; i < searchItems.length; ++i) {
- if (searchItems[i].isEmpty()) {
- continue;
- }
- if (i == 0) {
- notEmpty = true;
- sb.append(" (");
- } else {
- sb.append(" OR ");
- }
- StringBuilder placeholder = new StringBuilder();
- placeholder.append("%").append(StringUtils.lowerCase(searchItems[i])).append("%");
-
- sb.append("(");
- for (int j = 0; j < fields.length; ++j) {
- if (j != 0) {
- sb.append(" OR ");
- }
- sb.append("lower(").append(alias).append(".").append(fields[j]).append(") LIKE '").append(placeholder).append("' ");
- }
- sb.append(")");
- }
- if (notEmpty) {
- sb.append(") ");
- }
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.util;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.wicket.util.string.Strings;
+
+public class DaoHelper {
+
+ public static String getSearchQuery(String table, String alias, String search, boolean filterDeleted, boolean count, String sort, String... fields) {
+ return getSearchQuery(table, alias, search, false, filterDeleted, count, sort, fields);
+ }
+ public static String getSearchQuery(String table, String alias, String search, boolean distinct, boolean filterDeleted, boolean count, String sort, String... fields) {
+ return getSearchQuery(table, alias, null, search, distinct, filterDeleted, count, null, sort, fields);
+ }
+
+ public static String getSearchQuery(String table, String alias, String join, String search, boolean filterDeleted, boolean count, String additionalWhere, String sort, String... fields) {
+ return getSearchQuery(table, alias, join, search, false, filterDeleted, count, additionalWhere, sort, fields);
+ }
+
+ public static String getSearchQuery(String table, String alias, String join, String search, boolean distinct, boolean filterDeleted, boolean count, String additionalWhere, String sort, String... fields) {
+ StringBuilder sb = new StringBuilder("SELECT ");
+ if (count) {
+ sb.append("COUNT(");
+ }
+ if (distinct) {
+ sb.append("DISTINCT ");
+ }
+ sb.append(alias);
+ if (count) {
+ sb.append(")");
+ }
+ sb.append(" FROM ").append(table).append(" ").append(alias);
+ if (!Strings.isEmpty(join)) {
+ sb.append(" ").append(join);
+ }
+ sb.append(" WHERE 1 = 1 ");
+ if (filterDeleted) {
+ sb.append("AND ").append(alias).append(".deleted = false ");
+ }
+ StringBuilder where = getWhereClause(search, alias, fields);
+ if (!Strings.isEmpty(where)) {
+ sb.append("AND ").append(where);
+ }
+ if (!Strings.isEmpty(additionalWhere)) {
+ sb.append("AND ").append(additionalWhere);
+ }
+ if (!Strings.isEmpty(sort)) {
+ sb.append(" ORDER BY ").append(alias).append(".").append(sort);
+ }
+ return sb.toString();
+ }
+
+ public static StringBuilder getWhereClause(String search, String alias, String... fields) {
+ StringBuilder sb = new StringBuilder();
+ getWhereClause(sb, search, alias, fields);
+ return sb;
+ }
+
+ public static void getWhereClause(StringBuilder sb, String search, String alias, String... fields) {
+ if (search != null) {
+ boolean notEmpty = false;
+ String[] searchItems = search.replace("\'", "").replace("\"", "").split(" ");
+ for (int i = 0; i < searchItems.length; ++i) {
+ if (searchItems[i].isEmpty()) {
+ continue;
+ }
+ if (i == 0) {
+ notEmpty = true;
+ sb.append(" (");
+ } else {
+ sb.append(" OR ");
+ }
+ StringBuilder placeholder = new StringBuilder();
+ placeholder.append("%").append(StringUtils.lowerCase(searchItems[i])).append("%");
+
+ sb.append("(");
+ for (int j = 0; j < fields.length; ++j) {
+ if (j != 0) {
+ sb.append(" OR ");
+ }
+ sb.append("lower(").append(alias).append(".").append(fields[j]).append(") LIKE '").append(placeholder).append("' ");
+ }
+ sb.append(")");
+ }
+ if (notEmpty) {
+ sb.append(") ");
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
index 80b4ce1..3de9fdf 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
@@ -1,315 +1,315 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.util;
-
-import java.io.File;
-import java.io.IOException;
-import java.text.DecimalFormat;
-
-import org.apache.openmeetings.util.ConnectionProperties.DbType;
-
-public class OmFileHelper {
- /**
- * This variable needs to point to the openmeetings webapp directory
- */
- private static File OM_HOME = null;
- private static final String UPLOAD_DIR = "upload";
- private static final String PUBLIC_DIR = "public";
- private static final String CLIPARTS_DIR = "cliparts";
- private static final String WEB_INF_DIR = "WEB-INF";
- private static final String GROUP_LOGO_DIR = "grouplogo";
- private static final String STREAMS_DIR = "streams";
- private static final String EMOTIONS_DIR = "emoticons";
- private static final String LANGUAGES_DIR = "languages";
- private static final String HIBERNATE_DIR = "hibernate";
- private static final String CONF_DIR = "conf";
- private static final String IMAGES_DIR = "images";
- private static final String WML_DIR = "stored";
- private static final String INSTALL_FILE = "install.xml";
-
- public static final String BACKUP_DIR = "backup";
- public static final String IMPORT_DIR = "import";
- public static final String PROFILES_DIR = "profiles";
- public static final String SCREENSHARING_DIR = "screensharing";
- public static final String FILES_DIR = "files";
- public static final String PERSISTENCE_NAME = "classes/META-INF/persistence.xml";
- public static final String DB_PERSISTENCE_NAME = "classes/META-INF/%s_persistence.xml";
- public static final String profilesPrefix = "profile_";
- public static final String nameOfLanguageFile = "languages.xml";
- public static final String nameOfErrorFile = "errorvalues.xml";
- public static final String libraryFileName = "library.xml";
- public static final String defaultProfileImageName = "profile.jpg";
- public static final String profileFileName = "profile";
- public static final String recordingFileName = "flvRecording_";
- public static final String profileImagePrefix = "_profile_";
- public static final String thumbImagePrefix = "_thumb_";
- public static final String TEST_SETUP_PREFIX = "TEST_SETUP_";
- public static final String dashboardFile = "dashboard.xml";
- public static final String EXTENSION_WML = "wml";
- public static final String EXTENSION_FLV = "flv";
- public static final String EXTENSION_MP4 = "mp4";
- public static final String EXTENSION_JPG = "jpg";
- public static final String EXTENSION_SWF = "swf";
- public static final String EXTENSION_PDF = "pdf";
- public static final String WB_VIDEO_FILE_PREFIX = "UPLOADFLV_";
- public static final String MP4_MIME_TYPE = "video/" + EXTENSION_MP4;
- public static final String JPG_MIME_TYPE = "image/jpeg";
- public static final String PNG_MIME_TYPE = "image/png";
- public static final String BCKP_ROOM_FILES = "roomFiles";
- public static final String BCKP_RECORD_FILES = "recordingFiles";
-
- public static void setOmHome(File omHome) {
- OmFileHelper.OM_HOME = omHome;
- }
-
- public static void setOmHome(String omHome) {
- OmFileHelper.OM_HOME = new File(omHome);
- }
-
- public static File getRootDir() {
- // FIXME hack !!!!
- return getOmHome().getParentFile().getParentFile();
- }
-
- public static File getOmHome() {
- return OmFileHelper.OM_HOME;
- }
-
- private static File getDir(File parent, String name) {
- File f = new File(parent, name);
- if (!f.exists()) {
- f.mkdirs();
- }
- return f;
- }
-
- public static File getUploadDir() {
- return new File(OmFileHelper.OM_HOME, UPLOAD_DIR);
- }
-
- public static File getUploadFilesDir() {
- return getDir(getUploadDir(), FILES_DIR);
- }
-
- public static File getUploadProfilesDir() {
- return getDir(getUploadDir(), PROFILES_DIR);
- }
-
- public static File getUploadProfilesUserDir(Long userId) {
- return getDir(getUploadProfilesDir(), profilesPrefix + userId);
- }
-
- public static File getUploadProfilesUserDir(String userId) {
- return getDir(getUploadProfilesDir(), profilesPrefix + userId);
- }
-
- public static File getGroupLogoDir() {
- return getDir(getUploadDir(), GROUP_LOGO_DIR);
- }
-
- public static File getGroupLogo(Long groupId, boolean check) {
- File logo = new File(getGroupLogoDir(), String.format("logo%s.png", groupId));
- if (check && !logo.exists()) {
- logo = new File(getImagesDir(), "blank.png");
- }
- return logo;
- }
-
- public static File getDefaultProfilePicture() {
- return new File(getImagesDir(), defaultProfileImageName);
- }
-
- public static File getUserProfilePicture(Long userId, String uri) {
- File img = new File(getUploadProfilesUserDir(userId), profileImagePrefix + uri);
- if (!img.exists()) {
- img = getDefaultProfilePicture();
- }
- return img;
- }
-
- public static File getUserDashboard(Long userId) {
- return new File(getUploadProfilesUserDir(userId), dashboardFile);
- }
-
- public static File getUploadImportDir() {
- return getDir(getUploadDir(), IMPORT_DIR);
- }
-
- public static File getUploadBackupDir() {
- return getDir(getUploadDir(), BACKUP_DIR);
- }
-
- public static File getUploadRoomDir(String roomName) {
- return getDir(getUploadDir(), roomName);
- }
-
- public static File getUploadWmlDir() {
- return getDir(getUploadDir(), WML_DIR);
- }
-
- public static File getStreamsDir() {
- return getDir(OmFileHelper.OM_HOME, STREAMS_DIR);
- }
-
- public static File getStreamsHibernateDir() {
- return getDir(getStreamsDir(), HIBERNATE_DIR);
- }
-
- public static File getRecording(String name) {
- return new File(getDir(getStreamsDir(), HIBERNATE_DIR), name);
- }
-
- public static File getStreamsSubDir(Long id) {
- return getStreamsSubDir("" + id);
- }
-
- public static File getStreamsSubDir(String name) {
- return getDir(getStreamsDir(), name);
- }
-
- public static String getName(String name, String ext) {
- return String.format("%s.%s", name, ext);
- }
-
- public static File getRecordingMetaData(Long roomId, String name) {
- return new File(getStreamsSubDir(roomId), getName(name, EXTENSION_FLV));
- }
-
- public static File getLanguagesDir() {
- return new File(OmFileHelper.OM_HOME, LANGUAGES_DIR);
- }
-
- public static File getPublicDir() {
- return new File(OmFileHelper.OM_HOME, PUBLIC_DIR);
- }
-
- public static File getPublicClipartsDir() {
- return new File(getPublicDir(), CLIPARTS_DIR);
- }
-
- public static File getPublicEmotionsDir() {
- return new File(getPublicDir(), EMOTIONS_DIR);
- }
-
- public static File getWebinfDir() {
- return new File(OmFileHelper.OM_HOME, WEB_INF_DIR);
- }
-
- public static File getPersistence() {
- return getPersistence((DbType) null);
- }
-
- public static File getPersistence(String dbType) {
- return getPersistence(DbType.valueOf(dbType));
- }
-
- public static File getPersistence(DbType dbType) {
- return new File(OmFileHelper.getWebinfDir(), dbType == null ? PERSISTENCE_NAME : String.format(DB_PERSISTENCE_NAME, dbType));
- }
-
- public static File getConfDir() {
- return new File(OmFileHelper.OM_HOME, CONF_DIR);
- }
-
- public static File getInstallFile() {
- return new File(getConfDir(), INSTALL_FILE);
- }
-
- public static File getScreenSharingDir() {
- return new File(OmFileHelper.OM_HOME, SCREENSHARING_DIR);
- }
-
- public static File getImagesDir() {
- return new File(OmFileHelper.OM_HOME, IMAGES_DIR);
- }
-
- public static File appendSuffix(File original, String suffix) {
- File parent = original.getParentFile();
- String name = original.getName();
- String ext = "";
- int idx = name.lastIndexOf('.');
- if (idx > -1) {
- name = name.substring(0, idx);
- ext = name.substring(idx);
- }
- return new File(parent, name + suffix + ext);
- }
-
- // FIXME need to be generalized
- public static File getNewFile(File dir, String name, String ext) throws IOException {
- File f = new File(dir, getName(name, ext));
- int recursiveNumber = 0;
- while (f.exists()) {
- f = new File(dir, name + "_" + (recursiveNumber++) + ext);
- }
- f.createNewFile();
- return f;
- }
-
- public static File getNewDir(File dir, String name) throws IOException {
- File f = new File(dir, name);
- String baseName = f.getCanonicalPath();
-
- int recursiveNumber = 0;
- while (f.exists()) {
- f = new File(baseName + "_" + (recursiveNumber++));
- }
- f.mkdir();
- return f;
- }
-
- public static String getHumanSize(File dir) {
- return getHumanSize(getSize(dir));
- }
-
- public static String getHumanSize(long size) {
- if (size <= 0) {
- return "0";
- }
- final String[] units = new String[] { "B", "KB", "MB", "GB", "TB" };
- int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
- return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
- }
-
- public static long getSize(File dir) {
- long size = 0;
- if (dir.isFile()) {
- size = dir.length();
- } else {
- for (File file : dir.listFiles()) {
- if (file.isFile()) {
- size += file.length();
- } else {
- size += getSize(file);
- }
- }
- }
- return size;
- }
-
- public static String getFileName(String name) {
- int dotidx = name.lastIndexOf('.');
- return dotidx < 0 ? "" : name.substring(0, dotidx);
- }
-
- public static String getFileExt(String name) {
- int dotidx = name.lastIndexOf('.');
- return dotidx < 0 ? "" : name.substring(dotidx + 1).toLowerCase();
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.DecimalFormat;
+
+import org.apache.openmeetings.util.ConnectionProperties.DbType;
+
+public class OmFileHelper {
+ /**
+ * This variable needs to point to the openmeetings webapp directory
+ */
+ private static File OM_HOME = null;
+ private static final String UPLOAD_DIR = "upload";
+ private static final String PUBLIC_DIR = "public";
+ private static final String CLIPARTS_DIR = "cliparts";
+ private static final String WEB_INF_DIR = "WEB-INF";
+ private static final String GROUP_LOGO_DIR = "grouplogo";
+ private static final String STREAMS_DIR = "streams";
+ private static final String EMOTIONS_DIR = "emoticons";
+ private static final String LANGUAGES_DIR = "languages";
+ private static final String HIBERNATE_DIR = "hibernate";
+ private static final String CONF_DIR = "conf";
+ private static final String IMAGES_DIR = "images";
+ private static final String WML_DIR = "stored";
+ private static final String INSTALL_FILE = "install.xml";
+
+ public static final String BACKUP_DIR = "backup";
+ public static final String IMPORT_DIR = "import";
+ public static final String PROFILES_DIR = "profiles";
+ public static final String SCREENSHARING_DIR = "screensharing";
+ public static final String FILES_DIR = "files";
+ public static final String PERSISTENCE_NAME = "classes/META-INF/persistence.xml";
+ public static final String DB_PERSISTENCE_NAME = "classes/META-INF/%s_persistence.xml";
+ public static final String profilesPrefix = "profile_";
+ public static final String nameOfLanguageFile = "languages.xml";
+ public static final String nameOfErrorFile = "errorvalues.xml";
+ public static final String libraryFileName = "library.xml";
+ public static final String defaultProfileImageName = "profile.jpg";
+ public static final String profileFileName = "profile";
+ public static final String recordingFileName = "flvRecording_";
+ public static final String profileImagePrefix = "_profile_";
+ public static final String thumbImagePrefix = "_thumb_";
+ public static final String TEST_SETUP_PREFIX = "TEST_SETUP_";
+ public static final String dashboardFile = "dashboard.xml";
+ public static final String EXTENSION_WML = "wml";
+ public static final String EXTENSION_FLV = "flv";
+ public static final String EXTENSION_MP4 = "mp4";
+ public static final String EXTENSION_JPG = "jpg";
+ public static final String EXTENSION_SWF = "swf";
+ public static final String EXTENSION_PDF = "pdf";
+ public static final String WB_VIDEO_FILE_PREFIX = "UPLOADFLV_";
+ public static final String MP4_MIME_TYPE = "video/" + EXTENSION_MP4;
+ public static final String JPG_MIME_TYPE = "image/jpeg";
+ public static final String PNG_MIME_TYPE = "image/png";
+ public static final String BCKP_ROOM_FILES = "roomFiles";
+ public static final String BCKP_RECORD_FILES = "recordingFiles";
+
+ public static void setOmHome(File omHome) {
+ OmFileHelper.OM_HOME = omHome;
+ }
+
+ public static void setOmHome(String omHome) {
+ OmFileHelper.OM_HOME = new File(omHome);
+ }
+
+ public static File getRootDir() {
+ // FIXME hack !!!!
+ return getOmHome().getParentFile().getParentFile();
+ }
+
+ public static File getOmHome() {
+ return OmFileHelper.OM_HOME;
+ }
+
+ private static File getDir(File parent, String name) {
+ File f = new File(parent, name);
+ if (!f.exists()) {
+ f.mkdirs();
+ }
+ return f;
+ }
+
+ public static File getUploadDir() {
+ return new File(OmFileHelper.OM_HOME, UPLOAD_DIR);
+ }
+
+ public static File getUploadFilesDir() {
+ return getDir(getUploadDir(), FILES_DIR);
+ }
+
+ public static File getUploadProfilesDir() {
+ return getDir(getUploadDir(), PROFILES_DIR);
+ }
+
+ public static File getUploadProfilesUserDir(Long userId) {
+ return getDir(getUploadProfilesDir(), profilesPrefix + userId);
+ }
+
+ public static File getUploadProfilesUserDir(String userId) {
+ return getDir(getUploadProfilesDir(), profilesPrefix + userId);
+ }
+
+ public static File getGroupLogoDir() {
+ return getDir(getUploadDir(), GROUP_LOGO_DIR);
+ }
+
+ public static File getGroupLogo(Long groupId, boolean check) {
+ File logo = new File(getGroupLogoDir(), String.format("logo%s.png", groupId));
+ if (check && !logo.exists()) {
+ logo = new File(getImagesDir(), "blank.png");
+ }
+ return logo;
+ }
+
+ public static File getDefaultProfilePicture() {
+ return new File(getImagesDir(), defaultProfileImageName);
+ }
+
+ public static File getUserProfilePicture(Long userId, String uri) {
+ File img = new File(getUploadProfilesUserDir(userId), profileImagePrefix + uri);
+ if (!img.exists()) {
+ img = getDefaultProfilePicture();
+ }
+ return img;
+ }
+
+ public static File getUserDashboard(Long userId) {
+ return new File(getUploadProfilesUserDir(userId), dashboardFile);
+ }
+
+ public static File getUploadImportDir() {
+ return getDir(getUploadDir(), IMPORT_DIR);
+ }
+
+ public static File getUploadBackupDir() {
+ return getDir(getUploadDir(), BACKUP_DIR);
+ }
+
+ public static File getUploadRoomDir(String roomName) {
+ return getDir(getUploadDir(), roomName);
+ }
+
+ public static File getUploadWmlDir() {
+ return getDir(getUploadDir(), WML_DIR);
+ }
+
+ public static File getStreamsDir() {
+ return getDir(OmFileHelper.OM_HOME, STREAMS_DIR);
+ }
+
+ public static File getStreamsHibernateDir() {
+ return getDir(getStreamsDir(), HIBERNATE_DIR);
+ }
+
+ public static File getRecording(String name) {
+ return new File(getDir(getStreamsDir(), HIBERNATE_DIR), name);
+ }
+
+ public static File getStreamsSubDir(Long id) {
+ return getStreamsSubDir("" + id);
+ }
+
+ public static File getStreamsSubDir(String name) {
+ return getDir(getStreamsDir(), name);
+ }
+
+ public static String getName(String name, String ext) {
+ return String.format("%s.%s", name, ext);
+ }
+
+ public static File getRecordingMetaData(Long roomId, String name) {
+ return new File(getStreamsSubDir(roomId), getName(name, EXTENSION_FLV));
+ }
+
+ public static File getLanguagesDir() {
+ return new File(OmFileHelper.OM_HOME, LANGUAGES_DIR);
+ }
+
+ public static File getPublicDir() {
+ return new File(OmFileHelper.OM_HOME, PUBLIC_DIR);
+ }
+
+ public static File getPublicClipartsDir() {
+ return new File(getPublicDir(), CLIPARTS_DIR);
+ }
+
+ public static File getPublicEmotionsDir() {
+ return new File(getPublicDir(), EMOTIONS_DIR);
+ }
+
+ public static File getWebinfDir() {
+ return new File(OmFileHelper.OM_HOME, WEB_INF_DIR);
+ }
+
+ public static File getPersistence() {
+ return getPersistence((DbType) null);
+ }
+
+ public static File getPersistence(String dbType) {
+ return getPersistence(DbType.valueOf(dbType));
+ }
+
+ public static File getPersistence(DbType dbType) {
+ return new File(OmFileHelper.getWebinfDir(), dbType == null ? PERSISTENCE_NAME : String.format(DB_PERSISTENCE_NAME, dbType));
+ }
+
+ public static File getConfDir() {
+ return new File(OmFileHelper.OM_HOME, CONF_DIR);
+ }
+
+ public static File getInstallFile() {
+ return new File(getConfDir(), INSTALL_FILE);
+ }
+
+ public static File getScreenSharingDir() {
+ return new File(OmFileHelper.OM_HOME, SCREENSHARING_DIR);
+ }
+
+ public static File getImagesDir() {
+ return new File(OmFileHelper.OM_HOME, IMAGES_DIR);
+ }
+
+ public static File appendSuffix(File original, String suffix) {
+ File parent = original.getParentFile();
+ String name = original.getName();
+ String ext = "";
+ int idx = name.lastIndexOf('.');
+ if (idx > -1) {
+ name = name.substring(0, idx);
+ ext = name.substring(idx);
+ }
+ return new File(parent, name + suffix + ext);
+ }
+
+ // FIXME need to be generalized
+ public static File getNewFile(File dir, String name, String ext) throws IOException {
+ File f = new File(dir, getName(name, ext));
+ int recursiveNumber = 0;
+ while (f.exists()) {
+ f = new File(dir, name + "_" + (recursiveNumber++) + ext);
+ }
+ f.createNewFile();
+ return f;
+ }
+
+ public static File getNewDir(File dir, String name) throws IOException {
+ File f = new File(dir, name);
+ String baseName = f.getCanonicalPath();
+
+ int recursiveNumber = 0;
+ while (f.exists()) {
+ f = new File(baseName + "_" + (recursiveNumber++));
+ }
+ f.mkdir();
+ return f;
+ }
+
+ public static String getHumanSize(File dir) {
+ return getHumanSize(getSize(dir));
+ }
+
+ public static String getHumanSize(long size) {
+ if (size <= 0) {
+ return "0";
+ }
+ final String[] units = new String[] { "B", "KB", "MB", "GB", "TB" };
+ int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
+ return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
+ }
+
+ public static long getSize(File dir) {
+ long size = 0;
+ if (dir.isFile()) {
+ size = dir.length();
+ } else {
+ for (File file : dir.listFiles()) {
+ if (file.isFile()) {
+ size += file.length();
+ } else {
+ size += getSize(file);
+ }
+ }
+ }
+ return size;
+ }
+
+ public static String getFileName(String name) {
+ int dotidx = name.lastIndexOf('.');
+ return dotidx < 0 ? "" : name.substring(0, dotidx);
+ }
+
+ public static String getFileExt(String name) {
+ int dotidx = name.lastIndexOf('.');
+ return dotidx < 0 ? "" : name.substring(dotidx + 1).toLowerCase();
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
index 2d677dd..7ad8c08 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
@@ -1,98 +1,98 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.util;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.jar.Attributes;
-import java.util.jar.Manifest;
-
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-public class Version {
- private static final Logger log = Red5LoggerFactory.getLogger(Version.class, OpenmeetingsVariables.webAppRootKey);
- private static final int startedStringLength = 78;
- private static String version = null;
- private static String revision = null;
- private static String buildDate = null;
-
- private static Attributes getAttributes() throws MalformedURLException, IOException {
- String jarUrl = Version.class.getResource(Version.class.getSimpleName() + ".class").toString();
- return new Manifest(new URL(jarUrl.substring(0, jarUrl.indexOf('!')) + "!/META-INF/MANIFEST.MF").openStream()).getMainAttributes();
- }
-
- public static String getVersion() {
- if (version == null) {
- try {
- version = getAttributes().getValue("Product-Version");
- } catch (Exception e) {
- log.error("Error", e);
- }
- }
- return version;
- }
-
- public static String getRevision() {
- if (revision == null) {
- try {
- revision = getAttributes().getValue("Git-Revision");
- } catch (Exception e) {
- log.error("Error", e);
- }
- }
- return revision;
- }
-
- public static String getBuildDate() {
- if (buildDate == null) {
- try {
- buildDate = getAttributes().getValue("Built-On");
- } catch (Exception e) {
- log.error("Error", e);
- }
- }
- return buildDate;
- }
-
- private static void getLine(StringBuilder sb, String text, char fill) {
- sb.append("\t#");
- int l = text.length();
- int headLength = (startedStringLength - l) / 2;
- for (int i = 0; i < headLength; ++i) {
- sb.append(fill);
- }
- sb.append(text);
- for (int i = 0; i < (startedStringLength - l - headLength); ++i) {
- sb.append(fill);
- }
- sb.append("#\n");
- }
-
- public static void logOMStarted() {
- StringBuilder sb = new StringBuilder("\n");
- getLine(sb, "", '#');
- getLine(sb, "Openmeetings is up", ' ');
- getLine(sb, getVersion() + " " + getRevision() + " " + getBuildDate(), ' ');
- getLine(sb, "and ready to use", ' ');
- getLine(sb, "", '#');
- log.debug(sb.toString());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.util;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class Version {
+ private static final Logger log = Red5LoggerFactory.getLogger(Version.class, OpenmeetingsVariables.webAppRootKey);
+ private static final int startedStringLength = 78;
+ private static String version = null;
+ private static String revision = null;
+ private static String buildDate = null;
+
+ private static Attributes getAttributes() throws MalformedURLException, IOException {
+ String jarUrl = Version.class.getResource(Version.class.getSimpleName() + ".class").toString();
+ return new Manifest(new URL(jarUrl.substring(0, jarUrl.indexOf('!')) + "!/META-INF/MANIFEST.MF").openStream()).getMainAttributes();
+ }
+
+ public static String getVersion() {
+ if (version == null) {
+ try {
+ version = getAttributes().getValue("Product-Version");
+ } catch (Exception e) {
+ log.error("Error", e);
+ }
+ }
+ return version;
+ }
+
+ public static String getRevision() {
+ if (revision == null) {
+ try {
+ revision = getAttributes().getValue("Git-Revision");
+ } catch (Exception e) {
+ log.error("Error", e);
+ }
+ }
+ return revision;
+ }
+
+ public static String getBuildDate() {
+ if (buildDate == null) {
+ try {
+ buildDate = getAttributes().getValue("Built-On");
+ } catch (Exception e) {
+ log.error("Error", e);
+ }
+ }
+ return buildDate;
+ }
+
+ private static void getLine(StringBuilder sb, String text, char fill) {
+ sb.append("\t#");
+ int l = text.length();
+ int headLength = (startedStringLength - l) / 2;
+ for (int i = 0; i < headLength; ++i) {
+ sb.append(fill);
+ }
+ sb.append(text);
+ for (int i = 0; i < (startedStringLength - l - headLength); ++i) {
+ sb.append(fill);
+ }
+ sb.append("#\n");
+ }
+
+ public static void logOMStarted() {
+ StringBuilder sb = new StringBuilder("\n");
+ getLine(sb, "", '#');
+ getLine(sb, "Openmeetings is up", ' ');
+ getLine(sb, getVersion() + " " + getRevision() + " " + getBuildDate(), ' ');
+ getLine(sb, "and ready to use", ' ');
+ getLine(sb, "", '#');
+ log.debug(sb.toString());
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
index e43cfaa..3805521 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
@@ -1,34 +1,34 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.util.mail;
-
-import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
-import org.apache.wicket.util.string.Strings;
-import org.apache.wicket.validation.Validatable;
-
-public class MailUtil {
- public static boolean isValid(String email) {
- if (Strings.isEmpty(email)) {
- return false;
- }
- Validatable<String> eml = new Validatable<>(email);
- RfcCompliantEmailAddressValidator.getInstance().validate(eml);
- return eml.isValid();
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.util.mail;
+
+import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.validation.Validatable;
+
+public class MailUtil {
+ public static boolean isValid(String email) {
+ if (Strings.isEmpty(email)) {
+ return false;
+ }
+ Validatable<String> eml = new Validatable<>(email);
+ RfcCompliantEmailAddressValidator.getInstance().validate(eml);
+ return eml.isValid();
+ }
+}
[16/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/BuildInstructions_3.0.x.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/BuildInstructions_3.0.x.xml b/openmeetings-server/src/site/xdoc/BuildInstructions_3.0.x.xml
index 481521f..ac74b31 100644
--- a/openmeetings-server/src/site/xdoc/BuildInstructions_3.0.x.xml
+++ b/openmeetings-server/src/site/xdoc/BuildInstructions_3.0.x.xml
@@ -1,305 +1,305 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Build instructions version 3.0.x</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Nightly Builds">
- <p>
- You can find Nightly Builds of the software at:
- <a href="https://builds.apache.org/view/M-R/view/OpenMeetings/" rel="nofollow" target="_blank">
- https://builds.apache.org/view/M-R/view/OpenMeetings/
- </a>
- </p>
- </section>
-
- <section name="These instructions are for 3.0.x version only"/>
-
- <section name="How to Build a Distribution">
- <div>
- <p>To build a binary release of OpenMeetings you need: </p>
- <ul>
- <li>Oracle JDK7</li>
- <li>Apache ANT (minimum) 1.8.3</li>
- <li>
- SVN Command line client (Subversion 1.7 required!)
- <a href="http://subversion.apache.org/packages.html" target="_blank" rel="nofollow">http://subversion.apache.org/packages.html</a>
- </li>
- </ul>
- </div>
-
- <p>Get the source: </p>
- <source><![CDATA[svn checkout https://svn.apache.org/repos/asf/openmeetings/application/branches/3.0.x]]></source>
- <p>Run the command: </p>
- <source><![CDATA[ant ]]></source>
- <p>There is no need to compile the client additionally! The ant task
- does it all! You will find a directory dist that contains
- OpenMeetings and a red5-server.
- </p>
- <p>To compile the client you can also use ant: </p>
- <source>
-<![CDATA[
-ant # compiles a complete package into the folder dist
-ant compile.laszlo.main # compiles the client into main.as3.swf10.swf and main.swf8.swf
-ant compile.laszlo.main.debug # compiles the debug-client into maindebug.as3.swf10.swf and maindebug.swf8.swf
-ant -Ddb=<name of DB> # will copy <name of DB>_persistense.xml to persistense.xml
- #(for ex. ant -Ddb=mysql will set mysql as default DB)
-]]>
- </source>
- <p>To compile just the openmeetings JAR file: </p>
- <source><![CDATA[ant jar.only]]></source>
- <p>
- To run Junit tests using ANT see
- <a href="JUnitTesting.html">JUnitTesting</a>
- </p>
- </section>
-
- <section name="Run, Develop, Test">
-
- <p>
- To develop or build OpenMeetings you checkout the source as Eclipse
- project. You need the Subclipse or Subversive Plugin for Eclipse. If
- you just need to change 3 lines of code then your probably better
- switch to
- <a href="#How_to_build_a_distribution" rel="nofollow">How to build a
- distribution
- </a>
- .
- </p>
-
- <subsection name="Step1 - Get required Software">
-
- <p>To develop OpenMeetings you need at least: </p>
- <ul>
- <li>Eclipse in a up to date copy and Oracle JDK7 </li>
- <li>Apache ANT (minimum) 1.8.3</li>
- <li>
- Subclipse 1.8 (Subversion 1.7 required!)
- <a href="http://subclipse.tigris.org/" target="_blank" rel="nofollow">http://subclipse.tigris.org/
- </a>
- </li>
- <li>
- SVN Command line client (Subversion 1.7 required!)
- <a href="http://subversion.apache.org/packages.html" target="_blank"
- rel="nofollow">http://subversion.apache.org/packages.html</a>
- </li>
- <li>Spring IDE for Eclipse (installable via Help > Eclipse
- Marketplace)
- </li>
- <li>
- Apache IvyDE™ For Eclipse (installable via Help > Install
- New Software)
- URL: http://www.apache.org/dist/ant/ivyde/updatesite
- detailed steps can be found here:
- <a href="http://ant.apache.org/ivy/ivyde/download.cgi" target="_blank"
- rel="nofollow">http://ant.apache.org/ivy/ivyde/download.cgi</a>
- </li>
- <li>MySQL (or Postgres, or other Databases supported by openJPA)
- are optionally but handy to have them
- </li>
- </ul>
-
- </subsection>
-
- <subsection name="Step2 - Download the Source">
-
- <p>Advanced Users: Check out the Code from the Repository as a
- Java
- project into Eclipse.
- </p>
- <p>
- URL:
- <a href="https://svn.apache.org/repos/asf/openmeetings/branches/3.0.x/">
- https://svn.apache.org/repos/asf/openmeetings/branches/3.0.x/
- </a>
- </p>
- <p>To download the required JARs for building and developing
- OpenMeetings you need to run the ANT comand:
- </p>
- <source><![CDATA[ant -Ddb=<your_DB> dist prepare-eclipse]]></source>
- <p>After the ANT command you need to press F5 and rebuild the
- project from inside Eclipse
- </p>
- <p>Step-By-Step: </p>
- <p>1) Start Eclipse </p>
- <p>
- 2) Change Perspective to SVN Repository Exploring:
- <br />
- <br />
- <a class="fancybox-buttons" href="images/checkout_1.png">
- <img src="images/checkout_1.png" alt="" width="400" height="289" />
- </a>
-
- </p>
- <p>
- 3) Select SVN Repository Exploring and click ok.
- <br />
- <br />
- <a class="fancybox-buttons" href="images/checkout_2.png">
- <img src="images/checkout_2.png" alt="" width="304" height="417" />
- </a>
- </p>
- <p>
- 4) A new Dialog in Eclipse opens
- <strong>SVN Repositories</strong>
- <br />
- <br />
- <a class="fancybox-buttons" href="images/checkout_3.png">
- <img src="images/checkout_3.png" alt="" width="460" height="102" />
- </a>
- </p>
- <p>
- 5) Click on the icon with the plus in the top right corner in the
- SVN Repository Dialog
- <br />
- <br />
- <a class="fancybox-buttons" href="images/checkout_4.png">
- <img src="images/checkout_4.png" alt="" width="57" height="38" />
- </a>
- </p>
- <p>
- 6) Add the URL
- <a href="https://svn.apache.org/repos/asf/openmeetings/branches/3.0.x/" rel="nofollow">
- https://svn.apache.org/repos/asf/openmeetings/branches/3.0.x/
- </a>
- and click Finish
- <br />
- <br />
- <a class="fancybox-buttons" href="images/checkout_5.png">
- <img src="images/checkout_5.png" alt="" width="455" height="272" />
- </a>
- </p>
- <p>
- 7) After download is complete you see a new Source Repository in
- the Repository Explorer. Right click on it and choose
- <strong>checkout</strong>
- <br />
- <br />
- <a class="fancybox-buttons" href="images/checkout_6.png">
- <img src="images/checkout_6.png" alt="" width="340" height="135" />
- </a>
- </p>
- <p>
- 8) In the Dialog the opens now just click next
- <br />
- <br />
- <a class="fancybox-buttons" href="images/checkout_7.png">
- <img src="images/checkout_7.png" alt="" width="390" height="338" />
- </a>
- </p>
- <p>
- 9) In the next Dialog just click Finish, Eclipse will then download
- the sources
- <br />
- <br />
- <a class="fancybox-buttons" href="images/checkout_8.png">
- <img src="images/checkout_8.png" alt="" width="390" height="338" />
- </a>
- </p>
- <p>
- 10) After the download is complete you will see a new Project in
- the Package Explorer Dialog of Eclipse
- <br />
- <br />
- <a class="fancybox-buttons" href="images/checkout_9.png">
- <img src="images/checkout_9.png" alt="" width="310" height="297" />
- </a>
- </p>
- <div>
- 11) Please run
- <source><![CDATA[ant dist prepare-eclipse]]></source>
- to download all necessary jar files, and perform source
- <tt>Refresh</tt>
- to resolve all compilation issues.
- </div>
- </subsection>
-
- <subsection name="Step3 - Deploy and Run">
-
- <p>
- see the first chapter about the ANT tasks to compile the code. You
- will find a directory called
- <strong>dist</strong>
- which contains a regular openmeetings including red5. You can then
- use the usual process like described at
- <a href="installation.html">installation</a>
- to run the code then.
- </p>
- </subsection>
-
- </section>
-
- <section name="Links">
-
- <ul>
- <li>
- Getting Started with OpenLaszlo, checkout
- <a
- href="http://www.openlaszlo.org/demos#Laszlo10"
- target="_blank" rel="nofollow">Laszlo-in-10-Minutes</a>
- and the
- <a href="http://www.openlaszlo.org/taxonomy/term/14" target="_blank"
- rel="nofollow">Application Developer's Guide</a>
- or try the
- <a href="http://www.openlaszlo.org/getstarted" target="_blank"
- rel="nofollow">ScreenCast</a>
- </li>
- <li>
- <a href="http://openmeetings.apache.org/source-repository.html">
- browse SVN source
- </a>
- </li>
- </ul>
-
- </section>
-
- <section name="Tips and Gotchas">
-
- <p>When you want to develop only client side there are handy ANT
- tasks so that you only rebuild the SWFs, same for the Java side.
- </p>
- <p>
- It
- also takes much less time if you do use MySQL as database then
- rebuilding the software and waiting for Apache Derby to set up the
- database everytime you did rebuild.
- </p>
- <p>
- <b>Working behind a proxy:</b>
- If you are sitting behind a proxy you should add some proxy settings
- before starting the build process.
- <br />
- For Apache Ivy see:
- <a href="http://ant.apache.org/ivy/faq.html" target="_blank" rel="nofollow">http://ant.apache.org/ivy/faq.html
- </a>
- <br />
- For SVN Command Line Client (From CollabNet 1.7) see:
- <a
- href="https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html"
- target="_blank" rel="nofollow">https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html
- </a>
- </p>
-
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Build instructions version 3.0.x</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Nightly Builds">
+ <p>
+ You can find Nightly Builds of the software at:
+ <a href="https://builds.apache.org/view/M-R/view/OpenMeetings/" rel="nofollow" target="_blank">
+ https://builds.apache.org/view/M-R/view/OpenMeetings/
+ </a>
+ </p>
+ </section>
+
+ <section name="These instructions are for 3.0.x version only"/>
+
+ <section name="How to Build a Distribution">
+ <div>
+ <p>To build a binary release of OpenMeetings you need: </p>
+ <ul>
+ <li>Oracle JDK7</li>
+ <li>Apache ANT (minimum) 1.8.3</li>
+ <li>
+ SVN Command line client (Subversion 1.7 required!)
+ <a href="http://subversion.apache.org/packages.html" target="_blank" rel="nofollow">http://subversion.apache.org/packages.html</a>
+ </li>
+ </ul>
+ </div>
+
+ <p>Get the source: </p>
+ <source><![CDATA[svn checkout https://svn.apache.org/repos/asf/openmeetings/application/branches/3.0.x]]></source>
+ <p>Run the command: </p>
+ <source><![CDATA[ant ]]></source>
+ <p>There is no need to compile the client additionally! The ant task
+ does it all! You will find a directory dist that contains
+ OpenMeetings and a red5-server.
+ </p>
+ <p>To compile the client you can also use ant: </p>
+ <source>
+<![CDATA[
+ant # compiles a complete package into the folder dist
+ant compile.laszlo.main # compiles the client into main.as3.swf10.swf and main.swf8.swf
+ant compile.laszlo.main.debug # compiles the debug-client into maindebug.as3.swf10.swf and maindebug.swf8.swf
+ant -Ddb=<name of DB> # will copy <name of DB>_persistense.xml to persistense.xml
+ #(for ex. ant -Ddb=mysql will set mysql as default DB)
+]]>
+ </source>
+ <p>To compile just the openmeetings JAR file: </p>
+ <source><![CDATA[ant jar.only]]></source>
+ <p>
+ To run Junit tests using ANT see
+ <a href="JUnitTesting.html">JUnitTesting</a>
+ </p>
+ </section>
+
+ <section name="Run, Develop, Test">
+
+ <p>
+ To develop or build OpenMeetings you checkout the source as Eclipse
+ project. You need the Subclipse or Subversive Plugin for Eclipse. If
+ you just need to change 3 lines of code then your probably better
+ switch to
+ <a href="#How_to_build_a_distribution" rel="nofollow">How to build a
+ distribution
+ </a>
+ .
+ </p>
+
+ <subsection name="Step1 - Get required Software">
+
+ <p>To develop OpenMeetings you need at least: </p>
+ <ul>
+ <li>Eclipse in a up to date copy and Oracle JDK7 </li>
+ <li>Apache ANT (minimum) 1.8.3</li>
+ <li>
+ Subclipse 1.8 (Subversion 1.7 required!)
+ <a href="http://subclipse.tigris.org/" target="_blank" rel="nofollow">http://subclipse.tigris.org/
+ </a>
+ </li>
+ <li>
+ SVN Command line client (Subversion 1.7 required!)
+ <a href="http://subversion.apache.org/packages.html" target="_blank"
+ rel="nofollow">http://subversion.apache.org/packages.html</a>
+ </li>
+ <li>Spring IDE for Eclipse (installable via Help > Eclipse
+ Marketplace)
+ </li>
+ <li>
+ Apache IvyDE™ For Eclipse (installable via Help > Install
+ New Software)
+ URL: http://www.apache.org/dist/ant/ivyde/updatesite
+ detailed steps can be found here:
+ <a href="http://ant.apache.org/ivy/ivyde/download.cgi" target="_blank"
+ rel="nofollow">http://ant.apache.org/ivy/ivyde/download.cgi</a>
+ </li>
+ <li>MySQL (or Postgres, or other Databases supported by openJPA)
+ are optionally but handy to have them
+ </li>
+ </ul>
+
+ </subsection>
+
+ <subsection name="Step2 - Download the Source">
+
+ <p>Advanced Users: Check out the Code from the Repository as a
+ Java
+ project into Eclipse.
+ </p>
+ <p>
+ URL:
+ <a href="https://svn.apache.org/repos/asf/openmeetings/branches/3.0.x/">
+ https://svn.apache.org/repos/asf/openmeetings/branches/3.0.x/
+ </a>
+ </p>
+ <p>To download the required JARs for building and developing
+ OpenMeetings you need to run the ANT comand:
+ </p>
+ <source><![CDATA[ant -Ddb=<your_DB> dist prepare-eclipse]]></source>
+ <p>After the ANT command you need to press F5 and rebuild the
+ project from inside Eclipse
+ </p>
+ <p>Step-By-Step: </p>
+ <p>1) Start Eclipse </p>
+ <p>
+ 2) Change Perspective to SVN Repository Exploring:
+ <br />
+ <br />
+ <a class="fancybox-buttons" href="images/checkout_1.png">
+ <img src="images/checkout_1.png" alt="" width="400" height="289" />
+ </a>
+
+ </p>
+ <p>
+ 3) Select SVN Repository Exploring and click ok.
+ <br />
+ <br />
+ <a class="fancybox-buttons" href="images/checkout_2.png">
+ <img src="images/checkout_2.png" alt="" width="304" height="417" />
+ </a>
+ </p>
+ <p>
+ 4) A new Dialog in Eclipse opens
+ <strong>SVN Repositories</strong>
+ <br />
+ <br />
+ <a class="fancybox-buttons" href="images/checkout_3.png">
+ <img src="images/checkout_3.png" alt="" width="460" height="102" />
+ </a>
+ </p>
+ <p>
+ 5) Click on the icon with the plus in the top right corner in the
+ SVN Repository Dialog
+ <br />
+ <br />
+ <a class="fancybox-buttons" href="images/checkout_4.png">
+ <img src="images/checkout_4.png" alt="" width="57" height="38" />
+ </a>
+ </p>
+ <p>
+ 6) Add the URL
+ <a href="https://svn.apache.org/repos/asf/openmeetings/branches/3.0.x/" rel="nofollow">
+ https://svn.apache.org/repos/asf/openmeetings/branches/3.0.x/
+ </a>
+ and click Finish
+ <br />
+ <br />
+ <a class="fancybox-buttons" href="images/checkout_5.png">
+ <img src="images/checkout_5.png" alt="" width="455" height="272" />
+ </a>
+ </p>
+ <p>
+ 7) After download is complete you see a new Source Repository in
+ the Repository Explorer. Right click on it and choose
+ <strong>checkout</strong>
+ <br />
+ <br />
+ <a class="fancybox-buttons" href="images/checkout_6.png">
+ <img src="images/checkout_6.png" alt="" width="340" height="135" />
+ </a>
+ </p>
+ <p>
+ 8) In the Dialog the opens now just click next
+ <br />
+ <br />
+ <a class="fancybox-buttons" href="images/checkout_7.png">
+ <img src="images/checkout_7.png" alt="" width="390" height="338" />
+ </a>
+ </p>
+ <p>
+ 9) In the next Dialog just click Finish, Eclipse will then download
+ the sources
+ <br />
+ <br />
+ <a class="fancybox-buttons" href="images/checkout_8.png">
+ <img src="images/checkout_8.png" alt="" width="390" height="338" />
+ </a>
+ </p>
+ <p>
+ 10) After the download is complete you will see a new Project in
+ the Package Explorer Dialog of Eclipse
+ <br />
+ <br />
+ <a class="fancybox-buttons" href="images/checkout_9.png">
+ <img src="images/checkout_9.png" alt="" width="310" height="297" />
+ </a>
+ </p>
+ <div>
+ 11) Please run
+ <source><![CDATA[ant dist prepare-eclipse]]></source>
+ to download all necessary jar files, and perform source
+ <tt>Refresh</tt>
+ to resolve all compilation issues.
+ </div>
+ </subsection>
+
+ <subsection name="Step3 - Deploy and Run">
+
+ <p>
+ see the first chapter about the ANT tasks to compile the code. You
+ will find a directory called
+ <strong>dist</strong>
+ which contains a regular openmeetings including red5. You can then
+ use the usual process like described at
+ <a href="installation.html">installation</a>
+ to run the code then.
+ </p>
+ </subsection>
+
+ </section>
+
+ <section name="Links">
+
+ <ul>
+ <li>
+ Getting Started with OpenLaszlo, checkout
+ <a
+ href="http://www.openlaszlo.org/demos#Laszlo10"
+ target="_blank" rel="nofollow">Laszlo-in-10-Minutes</a>
+ and the
+ <a href="http://www.openlaszlo.org/taxonomy/term/14" target="_blank"
+ rel="nofollow">Application Developer's Guide</a>
+ or try the
+ <a href="http://www.openlaszlo.org/getstarted" target="_blank"
+ rel="nofollow">ScreenCast</a>
+ </li>
+ <li>
+ <a href="http://openmeetings.apache.org/source-repository.html">
+ browse SVN source
+ </a>
+ </li>
+ </ul>
+
+ </section>
+
+ <section name="Tips and Gotchas">
+
+ <p>When you want to develop only client side there are handy ANT
+ tasks so that you only rebuild the SWFs, same for the Java side.
+ </p>
+ <p>
+ It
+ also takes much less time if you do use MySQL as database then
+ rebuilding the software and waiting for Apache Derby to set up the
+ database everytime you did rebuild.
+ </p>
+ <p>
+ <b>Working behind a proxy:</b>
+ If you are sitting behind a proxy you should add some proxy settings
+ before starting the build process.
+ <br />
+ For Apache Ivy see:
+ <a href="http://ant.apache.org/ivy/faq.html" target="_blank" rel="nofollow">http://ant.apache.org/ivy/faq.html
+ </a>
+ <br />
+ For SVN Command Line Client (From CollabNet 1.7) see:
+ <a
+ href="https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html"
+ target="_blank" rel="nofollow">https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html
+ </a>
+ </p>
+
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/CalendarAndTimezone.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/CalendarAndTimezone.xml b/openmeetings-server/src/site/xdoc/CalendarAndTimezone.xml
index 9be46b9..a024075 100644
--- a/openmeetings-server/src/site/xdoc/CalendarAndTimezone.xml
+++ b/openmeetings-server/src/site/xdoc/CalendarAndTimezone.xml
@@ -1,68 +1,68 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Changing the Calendar and Timezone default</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Changing the Calendar and Timezone default">
-
- <p>
- In general the timezone is configured in the user profile of each
- user, so changing the server timezone has no effect how to the users
- calendar for example.
- <br />
- <br />
- However there are some circumstances where there is no user profile
- available.
- </p>
- </section>
-
- <section
- name="Changing servers default timzeone for Emails and Invitations (display)">
- <p>
- Goto Administration > Configuration and change the config-key:
- <tt>default.timezone</tt>
- </p>
- <p>Valid timezone have to meet standards! </p>
- </section>
-
- <section
- name="Changing first day in week for calendar from Sunday to Monday">
- <p>
- Goto Administration > Configuration and change the config-key:
- <tt>calendar.firstday</tt>
- </p>
- <p>The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc.</p>
- </section>
-
- <section
- name="Changing the default number of max participants of a conference room created via calendar">
-
- <p>Goto
- Administration > Configuration and change the config-key:
- <tt>calendar.conference.rooms.default.size</tt>
- </p>
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Changing the Calendar and Timezone default</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Changing the Calendar and Timezone default">
+
+ <p>
+ In general the timezone is configured in the user profile of each
+ user, so changing the server timezone has no effect how to the users
+ calendar for example.
+ <br />
+ <br />
+ However there are some circumstances where there is no user profile
+ available.
+ </p>
+ </section>
+
+ <section
+ name="Changing servers default timzeone for Emails and Invitations (display)">
+ <p>
+ Goto Administration > Configuration and change the config-key:
+ <tt>default.timezone</tt>
+ </p>
+ <p>Valid timezone have to meet standards! </p>
+ </section>
+
+ <section
+ name="Changing first day in week for calendar from Sunday to Monday">
+ <p>
+ Goto Administration > Configuration and change the config-key:
+ <tt>calendar.firstday</tt>
+ </p>
+ <p>The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc.</p>
+ </section>
+
+ <section
+ name="Changing the default number of max participants of a conference room created via calendar">
+
+ <p>Goto
+ Administration > Configuration and change the config-key:
+ <tt>calendar.conference.rooms.default.size</tt>
+ </p>
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/CallForLogo.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/CallForLogo.xml b/openmeetings-server/src/site/xdoc/CallForLogo.xml
index dfbee67..d8044af 100644
--- a/openmeetings-server/src/site/xdoc/CallForLogo.xml
+++ b/openmeetings-server/src/site/xdoc/CallForLogo.xml
@@ -1,243 +1,243 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Call For Logo</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="OpenMeetings Call For Logo">
- <p>
- As you may know, Apache Openmeetings is part of the Apache Software Foundation, which is a non-profit organization.
- In order to celebrate The Apache Software Foundation's 15th Anniversary and promote the ASF's more than 200 projects,
- Apache has launched an effort to get folks who use Apache projects to note that by including one or more of the newly-designed
- "Powered By Apache" logos on their websites, documentation, marketing materials, etc.<br/><br/>
-
- Guidelines for use are available here: <a href="http://apache.org/foundation/press/kit/">http://apache.org/foundation/press/kit</a><br/><br/>
-
- Unfortunately we have no suitable logo for this :(<br/><br/>
-
- This page is designed to test all proposed logo and choose the best one
- </p>
- <p>
- Please send your logos and opinions to <a href="mail-lists.html">user@ mail list</a> (you need to subscribe first)<br/>
- Thanks in advance :)
- </p>
- </section>
- <section name="Preview">
- <div class="powered-preview">
- </div>
- </section>
- <section name="Logos">
- <script type="text/javascript">
- //<![CDATA[
- function applyLogoBig(e) {
- var ib = e.closest('table').find('.logo-big');
- var bi = $('#bannerLeft img');
- bi.attr('src', ib.attr('src'));
- $('.subhead')[0].scrollIntoView()
- }
- function applyLogoSmall(e) {
- var pp = $('.powered-preview');
- var l = pp.children('.powered-preview-logo');
- if (!l.length) {
- l = $("<div class='powered-preview-logo'></div>");
- pp.append(l);
- }
- var ib = e.closest('table').find('.logo-square');
- l.css('background-image', 'url(' + ib.attr('src') + ')');
- $('#Preview')[0].scrollIntoView();
- }
- //]]>
- </script>
- <h3>Big version</h3>
- <ol>
- <li>
- <table>
- <tr>
- <td><img class="logo-big" src="images/logo.png" alt="Apache OpenMeetings"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Denis Kandrov</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-big" src="images/logos/logo_om_big3.png" alt="Apache OpenMeetings"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Vital Trizna</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-big" src="images/logos/logo_om_big4.png" alt="Apache OpenMeetings"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Vital Trizna</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-big" src="images/logos/logo_om_big5.png" alt="Apache OpenMeetings"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Vital Trizna</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-big" src="images/logos/logo_om_big6.png" alt="Apache OpenMeetings"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Daniel Baker</td>
- </tr>
- </table>
- </li>
- </ol>
- <h3>Square version</h3>
- <ol>
- <li>
- <table>
- <tr>
- <td><img class="logo-square" src="images/logos/logo_om1.png" alt="Square version" width="50"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Denis Kandrov</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-square" src="images/logos/logo_om_small2.png" alt="Square version" width="50"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Alvaro Bustos</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-square" src="images/logos/logo_om_small3.png" alt="Square version" width="50"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Vital Trizna</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-square" src="images/logos/logo_om_small4.png" alt="Square version" width="50"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Vital Trizna</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-square" src="images/logos/logo_om_small5.png" alt="Square version" width="50"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Alvaro Bustos</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-square" src="images/logos/logo_om_small6.png" alt="Square version" width="50"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Johan Strombom</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-square" src="images/logos/logo_om_small7.png" alt="Square version" width="50"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Amir Januzaj</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-square" src="images/logos/logo_om_small8.png" alt="Square version" width="50"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Alexander J. Tanchoco</td>
- </tr>
- </table>
- </li>
- <li>
- <table>
- <tr>
- <td><img class="logo-square" src="images/logos/logo_om_small9.png" alt="Square version" width="50"/></td>
- <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
- </tr>
- <tr>
- <td>Author</td>
- <td>Daniel Baker</td>
- </tr>
- </table>
- </li>
- </ol>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Call For Logo</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="OpenMeetings Call For Logo">
+ <p>
+ As you may know, Apache Openmeetings is part of the Apache Software Foundation, which is a non-profit organization.
+ In order to celebrate The Apache Software Foundation's 15th Anniversary and promote the ASF's more than 200 projects,
+ Apache has launched an effort to get folks who use Apache projects to note that by including one or more of the newly-designed
+ "Powered By Apache" logos on their websites, documentation, marketing materials, etc.<br/><br/>
+
+ Guidelines for use are available here: <a href="http://apache.org/foundation/press/kit/">http://apache.org/foundation/press/kit</a><br/><br/>
+
+ Unfortunately we have no suitable logo for this :(<br/><br/>
+
+ This page is designed to test all proposed logo and choose the best one
+ </p>
+ <p>
+ Please send your logos and opinions to <a href="mail-lists.html">user@ mail list</a> (you need to subscribe first)<br/>
+ Thanks in advance :)
+ </p>
+ </section>
+ <section name="Preview">
+ <div class="powered-preview">
+ </div>
+ </section>
+ <section name="Logos">
+ <script type="text/javascript">
+ //<![CDATA[
+ function applyLogoBig(e) {
+ var ib = e.closest('table').find('.logo-big');
+ var bi = $('#bannerLeft img');
+ bi.attr('src', ib.attr('src'));
+ $('.subhead')[0].scrollIntoView()
+ }
+ function applyLogoSmall(e) {
+ var pp = $('.powered-preview');
+ var l = pp.children('.powered-preview-logo');
+ if (!l.length) {
+ l = $("<div class='powered-preview-logo'></div>");
+ pp.append(l);
+ }
+ var ib = e.closest('table').find('.logo-square');
+ l.css('background-image', 'url(' + ib.attr('src') + ')');
+ $('#Preview')[0].scrollIntoView();
+ }
+ //]]>
+ </script>
+ <h3>Big version</h3>
+ <ol>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-big" src="images/logo.png" alt="Apache OpenMeetings"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Denis Kandrov</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-big" src="images/logos/logo_om_big3.png" alt="Apache OpenMeetings"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Vital Trizna</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-big" src="images/logos/logo_om_big4.png" alt="Apache OpenMeetings"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Vital Trizna</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-big" src="images/logos/logo_om_big5.png" alt="Apache OpenMeetings"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Vital Trizna</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-big" src="images/logos/logo_om_big6.png" alt="Apache OpenMeetings"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoBig($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Daniel Baker</td>
+ </tr>
+ </table>
+ </li>
+ </ol>
+ <h3>Square version</h3>
+ <ol>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-square" src="images/logos/logo_om1.png" alt="Square version" width="50"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Denis Kandrov</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-square" src="images/logos/logo_om_small2.png" alt="Square version" width="50"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Alvaro Bustos</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-square" src="images/logos/logo_om_small3.png" alt="Square version" width="50"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Vital Trizna</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-square" src="images/logos/logo_om_small4.png" alt="Square version" width="50"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Vital Trizna</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-square" src="images/logos/logo_om_small5.png" alt="Square version" width="50"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Alvaro Bustos</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-square" src="images/logos/logo_om_small6.png" alt="Square version" width="50"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Johan Strombom</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-square" src="images/logos/logo_om_small7.png" alt="Square version" width="50"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Amir Januzaj</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-square" src="images/logos/logo_om_small8.png" alt="Square version" width="50"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Alexander J. Tanchoco</td>
+ </tr>
+ </table>
+ </li>
+ <li>
+ <table>
+ <tr>
+ <td><img class="logo-square" src="images/logos/logo_om_small9.png" alt="Square version" width="50"/></td>
+ <td><span class="btn btn-primary" onclick="applyLogoSmall($(this));">Apply</span></td>
+ </tr>
+ <tr>
+ <td>Author</td>
+ <td>Daniel Baker</td>
+ </tr>
+ </table>
+ </li>
+ </ol>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/Clustering.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/Clustering.xml b/openmeetings-server/src/site/xdoc/Clustering.xml
index 9d073d1..134e364 100644
--- a/openmeetings-server/src/site/xdoc/Clustering.xml
+++ b/openmeetings-server/src/site/xdoc/Clustering.xml
@@ -1,139 +1,139 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Clustering</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Description">
- <p>
- OpenMeetings 2.1 or later is required to use clustering. One database is used for all OpenMeetings
- servers, so all database tables are shared across OM instances. Certain folders should be shared
- between all servers to allow access to the files/recording.</p>
- </section>
- <section name="Configuration">
- <ul>
- <li>
- Multiple OM servers should be set up as described in
- <a href="installation.html" target="_blank">
- <b>Installation</b>
- </a>
- </li>
- <li>All servers should be configured to have same Time zone (To avoid
- Schedulers to drop user sessions as outdated)
- </li>
- <li>All servers should be configured to use the same DB</li>
- <li>Servers should be added in Administration -> Servers section</li>
- </ul>
- </section>
- <section name="Database">
- <p>All servers should be configured to use the same database. It can be on the server or on the one node
- of the cluster.</p>
- <ul>
- <li>Add users who can connect to the database remotely</li>
- <li>Update <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml</tt>
- set correct server address, login and password. Also add the following section:
- <source><![CDATA[<property name="openjpa.RemoteCommitProvider" value="tcp(Addresses=10.1.1.1;10.1.1.2)" />]]></source>
- Instead of the 10.1.1.1 and 10.1.1.2 set semicolon separated IPs of all nodes of the cluster.
- </li>
- </ul>
- </section>
- <section name="File systems">
- <p>If files and recordings using the same physical folders the files and recordings will be available for
- each node. You can do this using Samba or NFS, for example. For using NFS do the following:</p>
- <ul>
- <li>Install NFS to the data server. In the file <tt>/etc/exports</tt> add the following lines:
- <source>
-/opt/red5/webapps/openmeetings/upload 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)
-/opt/red5/webapps/openmeetings/streams 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)
- </source>
- Here 10.1.1.2 - is node ip for NFS remote access. Add these lines for all nodes except node with
- folders.
- </li>
- <li>
- Install NFS common tools to other nodes. In the file <tt>/etc/fstab</tt> do the following:
- <source>
-10.1.1.1:/opt/red5/webapps/openmeetings/upload/
-/opt/red5/webapps/openmeetings/upload nfs timeo=50,hard,intr
-10.1.1.1:/opt/red5/webapps/openmeetings/streams/
-/opt/red5/webapps/openmeetings/streams nfs timeo=50,hard,intr
- </source>
- Here 10.1.1.1 – data server ip. And run the command:
- <source>mount -a</source>
- </li>
- </ul>
- </section>
- <section name="OM nodes configuration">
- <p>In the file <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/applicationContext.xml</tt>:</p>
- <ul>
- <li>
- For each node uncomment line:
- <source>
-<![CDATA[
-<!-- Need to be uncommented and set to the real ID if in cluster mode-->
-<property name="serverId" value="1" />
-]]>
- </source>
- and input the unique value for each node.
- </li>
- <li>
- Replace <tt><ref bean="openmeetings.HashMapStore" /> <!-- Memory based session cache by default --></tt><br/>
- with <tt><ref bean="openmeetings.DatabaseStore" /></tt>
- (Currently commented out with following comment: <tt>"The following section should be used in clustering mode"</tt>)
- </li>
- </ul>
- </section>
- <section name="Configuring cluster in Administration">
- <p>Run red5 on each node. Login to the system as admin.</p>
- <ul>
- <li>Go to the <tt>Administration -> Users</tt> and create Webservice user (only access via SOAP).</li>
- <li>
- Go to the <tt>Administration -> Servers</tt> and add all cluster nodes with the following settings:
- <source>
-Server Name = node name;
-Active = check the checkbox. If the checkbox is checked it means node is active and you can use this node;
-Server Address = node ip;
-HTTP Port = 5080 - port for http part of Openmeetings;
-User (SOAP Access) = login of Webservice user from the previous step;
-Password = password of Webservise user;
-Webapp path = openmeetings - path where OM installed on this node, it would be better if this path will be the same for all nodes;
-Protocol = http.
- </source>
- </li>
- </ul>
- <img src="images/cluster1.png" alt="" width="650" height="461" />
- </section>
- <section name="Ensure everything works as expected">
- <ul>
- <li>Set up the cluster and loggin with two users, go to the same room (also check before room
- entering that the status page with the room list shows the correct number of participants before
- entering the room). You should login to the same server initially, the server will redirect you
- for the conference room to the appropriate server automatically. Both users should be in the same room.
- </li>
- <li>Do the same with only two users but go to _different_ rooms. The calculation should send
- both users to different servers, cause based on the calculation two different rooms on a cluster
- with two nodes should go exactly one room for each node. You can now loggin really to node1
- and node2 of your cluster while those users are loggedin and go to <tt>Administration > Connections</tt>
- and check in the column "servers" where they are located. They should be on different server.
- </li>
- </ul>
- <img src="images/cluster2.png" alt="" width="650" height="369" />
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Clustering</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Description">
+ <p>
+ OpenMeetings 2.1 or later is required to use clustering. One database is used for all OpenMeetings
+ servers, so all database tables are shared across OM instances. Certain folders should be shared
+ between all servers to allow access to the files/recording.</p>
+ </section>
+ <section name="Configuration">
+ <ul>
+ <li>
+ Multiple OM servers should be set up as described in
+ <a href="installation.html" target="_blank">
+ <b>Installation</b>
+ </a>
+ </li>
+ <li>All servers should be configured to have same Time zone (To avoid
+ Schedulers to drop user sessions as outdated)
+ </li>
+ <li>All servers should be configured to use the same DB</li>
+ <li>Servers should be added in Administration -> Servers section</li>
+ </ul>
+ </section>
+ <section name="Database">
+ <p>All servers should be configured to use the same database. It can be on the server or on the one node
+ of the cluster.</p>
+ <ul>
+ <li>Add users who can connect to the database remotely</li>
+ <li>Update <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml</tt>
+ set correct server address, login and password. Also add the following section:
+ <source><![CDATA[<property name="openjpa.RemoteCommitProvider" value="tcp(Addresses=10.1.1.1;10.1.1.2)" />]]></source>
+ Instead of the 10.1.1.1 and 10.1.1.2 set semicolon separated IPs of all nodes of the cluster.
+ </li>
+ </ul>
+ </section>
+ <section name="File systems">
+ <p>If files and recordings using the same physical folders the files and recordings will be available for
+ each node. You can do this using Samba or NFS, for example. For using NFS do the following:</p>
+ <ul>
+ <li>Install NFS to the data server. In the file <tt>/etc/exports</tt> add the following lines:
+ <source>
+/opt/red5/webapps/openmeetings/upload 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)
+/opt/red5/webapps/openmeetings/streams 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)
+ </source>
+ Here 10.1.1.2 - is node ip for NFS remote access. Add these lines for all nodes except node with
+ folders.
+ </li>
+ <li>
+ Install NFS common tools to other nodes. In the file <tt>/etc/fstab</tt> do the following:
+ <source>
+10.1.1.1:/opt/red5/webapps/openmeetings/upload/
+/opt/red5/webapps/openmeetings/upload nfs timeo=50,hard,intr
+10.1.1.1:/opt/red5/webapps/openmeetings/streams/
+/opt/red5/webapps/openmeetings/streams nfs timeo=50,hard,intr
+ </source>
+ Here 10.1.1.1 – data server ip. And run the command:
+ <source>mount -a</source>
+ </li>
+ </ul>
+ </section>
+ <section name="OM nodes configuration">
+ <p>In the file <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/applicationContext.xml</tt>:</p>
+ <ul>
+ <li>
+ For each node uncomment line:
+ <source>
+<![CDATA[
+<!-- Need to be uncommented and set to the real ID if in cluster mode-->
+<property name="serverId" value="1" />
+]]>
+ </source>
+ and input the unique value for each node.
+ </li>
+ <li>
+ Replace <tt><ref bean="openmeetings.HashMapStore" /> <!-- Memory based session cache by default --></tt><br/>
+ with <tt><ref bean="openmeetings.DatabaseStore" /></tt>
+ (Currently commented out with following comment: <tt>"The following section should be used in clustering mode"</tt>)
+ </li>
+ </ul>
+ </section>
+ <section name="Configuring cluster in Administration">
+ <p>Run red5 on each node. Login to the system as admin.</p>
+ <ul>
+ <li>Go to the <tt>Administration -> Users</tt> and create Webservice user (only access via SOAP).</li>
+ <li>
+ Go to the <tt>Administration -> Servers</tt> and add all cluster nodes with the following settings:
+ <source>
+Server Name = node name;
+Active = check the checkbox. If the checkbox is checked it means node is active and you can use this node;
+Server Address = node ip;
+HTTP Port = 5080 - port for http part of Openmeetings;
+User (SOAP Access) = login of Webservice user from the previous step;
+Password = password of Webservise user;
+Webapp path = openmeetings - path where OM installed on this node, it would be better if this path will be the same for all nodes;
+Protocol = http.
+ </source>
+ </li>
+ </ul>
+ <img src="images/cluster1.png" alt="" width="650" height="461" />
+ </section>
+ <section name="Ensure everything works as expected">
+ <ul>
+ <li>Set up the cluster and loggin with two users, go to the same room (also check before room
+ entering that the status page with the room list shows the correct number of participants before
+ entering the room). You should login to the same server initially, the server will redirect you
+ for the conference room to the appropriate server automatically. Both users should be in the same room.
+ </li>
+ <li>Do the same with only two users but go to _different_ rooms. The calculation should send
+ both users to different servers, cause based on the calculation two different rooms on a cluster
+ with two nodes should go exactly one room for each node. You can now loggin really to node1
+ and node2 of your cluster while those users are loggedin and go to <tt>Administration > Connections</tt>
+ and check in the column "servers" where they are located. They should be on different server.
+ </li>
+ </ul>
+ <img src="images/cluster2.png" alt="" width="650" height="369" />
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/CommandLineAdmin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/CommandLineAdmin.xml b/openmeetings-server/src/site/xdoc/CommandLineAdmin.xml
index 41630e9..c0fa323 100644
--- a/openmeetings-server/src/site/xdoc/CommandLineAdmin.xml
+++ b/openmeetings-server/src/site/xdoc/CommandLineAdmin.xml
@@ -1,100 +1,100 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Command line admin</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="Usage">
- <p>To avoid intensive traffic utilization and save your time you can
- use command line admin to achieve following tasks:</p>
- <ul>
- <li>Install using defaults</li>
- <li>Install from backup</li>
- <li>Backup</li>
- <li>Cleanup</li>
- </ul>
- <p>Some example commands:</p>
- <p>MySQL (requires to place the MySQL JDBC driver into webapps/openmeetings/WEB-INF/lib before running the command):</p>
- <source>./admin.sh -i -v -tz Europe/Berlin -email your.email@gmail.com -group webbase -user admin --smtp-server localhost \
- --db-type mysql --db-name openmeetings_db --email-auth-user noreply@webbase-design.de --password 123qweasd \
- --system-email-address noreply@webbase-design.de --db-user root --db-host localhost --email-auth-pass 123qweasd
- </source>
- <p>Derby (Not recommended for production environment):</p>
- <source>./admin.sh -i -v -tz Europe/Berlin -email seba.wagner@gmail.com -group webbase -user admin --smtp-server localhost \
- --email-auth-user noreply@webbase-design.de --password 123qweasd --system-email-address noreply@webbase-design.de --email-auth-pass 123qweasd
- </source>
- </section>
- <section name="Command reference">
-<source><![CDATA[
- -v,--verbose verbose error messages
---------------------------------------------------------------------------------------------------
- -h,--help prints this message
---------------------------------------------------------------------------------------------------
- -b,--backup Backups OM
- -file <arg> (optional) file used for backup/restore/install
- --exclude-files (optional) should backup exclude files [default: include]
---------------------------------------------------------------------------------------------------
- -r,--restore Restores OM
- -file <arg> file used for backup/restore/install
---------------------------------------------------------------------------------------------------
- -l,--LDAP Import LDAP users into DB
- -d,--domain-id <arg> LDAP domain Id
- --print-only (optional) Print users found instead of importing
---------------------------------------------------------------------------------------------------
- -i,--install Fill DB table, and make OM usable
- -tz <arg> Default server time zone, and time zone for the selected user
- (mutually exclusive with 'file')
- -group <arg> The name of the default user group (mutually exclusive with
- 'file')
- -email <arg> Email of the default user (mutually exclusive with 'file')
- -user <arg> Login name of the default user, minimum 4 characters (mutually
- exclusive with 'file')
- -file <arg> file used for backup/restore/install
- --password <arg> (optional) Password of the default user, minimum 4 characters
- (will be prompted if not set)
- --system-email-address <arg> (optional) System e-mail address [default:
- noreply@openmeetings.apache.org]
- --smtp-server <arg> (optional) SMTP server for outgoing e-mails [default:
- localhost]
- --smtp-port <arg> (optional) SMTP server for outgoing e-mails [default: 25]
- --email-auth-user <arg> (optional) Email auth username (anonymous connection will be
- used if not set)
- --email-auth-pass <arg> (optional) Email auth password (anonymous connection will be
- used if not set)
- --email-use-tls (optional) Is secure e-mail connection [default: no]
- --skip-default-rooms (optional) Do not create default rooms [created by default]
- --disable-frontend-register (optional) Do not allow front end register [allowed by default]
- --db-type <arg> (optional) The type of the DB to be used
- --db-host <arg> (optional) DNS name or IP address of database
- --db-port <arg> (optional) Database port
- --db-name <arg> (optional) The name of Openmeetings database
- --db-user <arg> (optional) User with write access to the DB specified
- --db-pass <arg> (optional) Password of the user with write access to the DB
- specified
- --drop (optional) Drop database before installation
- --force (optional) Install without checking the existence of old data
- in the database.
---------------------------------------------------------------------------------------------------
- -f,--files File operations - statictics/cleanup
- --cleanup (optional) Should intermediate files be clean up
---------------------------------------------------------------------------------------------------
-]]></source>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Command line admin</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="Usage">
+ <p>To avoid intensive traffic utilization and save your time you can
+ use command line admin to achieve following tasks:</p>
+ <ul>
+ <li>Install using defaults</li>
+ <li>Install from backup</li>
+ <li>Backup</li>
+ <li>Cleanup</li>
+ </ul>
+ <p>Some example commands:</p>
+ <p>MySQL (requires to place the MySQL JDBC driver into webapps/openmeetings/WEB-INF/lib before running the command):</p>
+ <source>./admin.sh -i -v -tz Europe/Berlin -email your.email@gmail.com -group webbase -user admin --smtp-server localhost \
+ --db-type mysql --db-name openmeetings_db --email-auth-user noreply@webbase-design.de --password 123qweasd \
+ --system-email-address noreply@webbase-design.de --db-user root --db-host localhost --email-auth-pass 123qweasd
+ </source>
+ <p>Derby (Not recommended for production environment):</p>
+ <source>./admin.sh -i -v -tz Europe/Berlin -email seba.wagner@gmail.com -group webbase -user admin --smtp-server localhost \
+ --email-auth-user noreply@webbase-design.de --password 123qweasd --system-email-address noreply@webbase-design.de --email-auth-pass 123qweasd
+ </source>
+ </section>
+ <section name="Command reference">
+<source><![CDATA[
+ -v,--verbose verbose error messages
+--------------------------------------------------------------------------------------------------
+ -h,--help prints this message
+--------------------------------------------------------------------------------------------------
+ -b,--backup Backups OM
+ -file <arg> (optional) file used for backup/restore/install
+ --exclude-files (optional) should backup exclude files [default: include]
+--------------------------------------------------------------------------------------------------
+ -r,--restore Restores OM
+ -file <arg> file used for backup/restore/install
+--------------------------------------------------------------------------------------------------
+ -l,--LDAP Import LDAP users into DB
+ -d,--domain-id <arg> LDAP domain Id
+ --print-only (optional) Print users found instead of importing
+--------------------------------------------------------------------------------------------------
+ -i,--install Fill DB table, and make OM usable
+ -tz <arg> Default server time zone, and time zone for the selected user
+ (mutually exclusive with 'file')
+ -group <arg> The name of the default user group (mutually exclusive with
+ 'file')
+ -email <arg> Email of the default user (mutually exclusive with 'file')
+ -user <arg> Login name of the default user, minimum 4 characters (mutually
+ exclusive with 'file')
+ -file <arg> file used for backup/restore/install
+ --password <arg> (optional) Password of the default user, minimum 4 characters
+ (will be prompted if not set)
+ --system-email-address <arg> (optional) System e-mail address [default:
+ noreply@openmeetings.apache.org]
+ --smtp-server <arg> (optional) SMTP server for outgoing e-mails [default:
+ localhost]
+ --smtp-port <arg> (optional) SMTP server for outgoing e-mails [default: 25]
+ --email-auth-user <arg> (optional) Email auth username (anonymous connection will be
+ used if not set)
+ --email-auth-pass <arg> (optional) Email auth password (anonymous connection will be
+ used if not set)
+ --email-use-tls (optional) Is secure e-mail connection [default: no]
+ --skip-default-rooms (optional) Do not create default rooms [created by default]
+ --disable-frontend-register (optional) Do not allow front end register [allowed by default]
+ --db-type <arg> (optional) The type of the DB to be used
+ --db-host <arg> (optional) DNS name or IP address of database
+ --db-port <arg> (optional) Database port
+ --db-name <arg> (optional) The name of Openmeetings database
+ --db-user <arg> (optional) User with write access to the DB specified
+ --db-pass <arg> (optional) Password of the user with write access to the DB
+ specified
+ --drop (optional) Drop database before installation
+ --force (optional) Install without checking the existence of old data
+ in the database.
+--------------------------------------------------------------------------------------------------
+ -f,--files File operations - statictics/cleanup
+ --cleanup (optional) Should intermediate files be clean up
+--------------------------------------------------------------------------------------------------
+]]></source>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/ConferenceRoomLayoutOptions.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/ConferenceRoomLayoutOptions.xml b/openmeetings-server/src/site/xdoc/ConferenceRoomLayoutOptions.xml
index df66401..5703eeb 100644
--- a/openmeetings-server/src/site/xdoc/ConferenceRoomLayoutOptions.xml
+++ b/openmeetings-server/src/site/xdoc/ConferenceRoomLayoutOptions.xml
@@ -1,87 +1,87 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Layout options for a conference room in OpenMeetings</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="Layout options for conference rooms">
- <p>
- Each room has a number of attributes to generate different layouts.
- You can change those values individually for each room in Administration > Rooms
- </p>
- <p></p>
- <table>
- <tr>
- <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> key </th>
- <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> default </th>
- <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> meaning </th>
- <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> availabe since OpenMeetings version </th>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideTopBar </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the top bar with the menus and exit button </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideChat </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the chat tab and use space for whiteboard </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideActivitiesAndActions </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the activities window with the notofications aber user activities</td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideFilesExplorer </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the file explorer</td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideActionsMenu </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the menu with the actions</td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideScreenSharing </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the button to start screensharing/recording</td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideWhiteboard </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the whiteboard, if this option is true, the videos will be in the area of the whiteboard</td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> showMicrophoneStatus </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Show the current status of the microphone (off/on) on the bottom of each video view</td>
- <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
- </tr>
- </table>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Layout options for a conference room in OpenMeetings</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="Layout options for conference rooms">
+ <p>
+ Each room has a number of attributes to generate different layouts.
+ You can change those values individually for each room in Administration > Rooms
+ </p>
+ <p></p>
+ <table>
+ <tr>
+ <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> key </th>
+ <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> default </th>
+ <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> meaning </th>
+ <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> availabe since OpenMeetings version </th>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideTopBar </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the top bar with the menus and exit button </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideChat </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the chat tab and use space for whiteboard </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideActivitiesAndActions </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the activities window with the notofications aber user activities</td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideFilesExplorer </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the file explorer</td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideActionsMenu </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the menu with the actions</td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideScreenSharing </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the button to start screensharing/recording</td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideWhiteboard </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the whiteboard, if this option is true, the videos will be in the area of the whiteboard</td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> showMicrophoneStatus </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Show the current status of the microphone (off/on) on the bottom of each video view</td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+ </tr>
+ </table>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/ConfluencePlugin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/ConfluencePlugin.xml b/openmeetings-server/src/site/xdoc/ConfluencePlugin.xml
index 7df5844..c59c8d3 100644
--- a/openmeetings-server/src/site/xdoc/ConfluencePlugin.xml
+++ b/openmeetings-server/src/site/xdoc/ConfluencePlugin.xml
@@ -1,49 +1,49 @@
-<?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="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Confluence Plugin</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Confluence Plugin for OpenMeetings">
- <p>Sources are available at <a href="https://svn.apache.org/repos/asf/openmeetings/plugin/trunk/confluence">https://svn.apache.org/repos/asf/openmeetings/plugin/trunk/confluence</a></p>
- <p>
- To get SNAPSHOTS for testing please contact <a href="mail-lists.html">Mailing lists</a>
- </p>
- </section>
-
- <section name="Features">
- <p>The plugin contains the following features: </p>
- <ul>
- <li>Create videoconference rooms through Confluence: </li>
- <li>
- <ol>
- <li>Integrated with Confluence content </li>
- <li>Configurable room type </li>
- </ol>
- </li>
- </ul>
- </section>
-
- <section name="Demo video">
- <p>The demo video of Confluence plugin show you the plugin in action </p>
- <iframe width="640" height="390" src="http://www.youtube.com/embed/YFKlXggtld0" frameborder="0" allowfullscreen=""></iframe>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Confluence Plugin</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Confluence Plugin for OpenMeetings">
+ <p>Sources are available at <a href="https://svn.apache.org/repos/asf/openmeetings/plugin/trunk/confluence">https://svn.apache.org/repos/asf/openmeetings/plugin/trunk/confluence</a></p>
+ <p>
+ To get SNAPSHOTS for testing please contact <a href="mail-lists.html">Mailing lists</a>
+ </p>
+ </section>
+
+ <section name="Features">
+ <p>The plugin contains the following features: </p>
+ <ul>
+ <li>Create videoconference rooms through Confluence: </li>
+ <li>
+ <ol>
+ <li>Integrated with Confluence content </li>
+ <li>Configurable room type </li>
+ </ol>
+ </li>
+ </ul>
+ </section>
+
+ <section name="Demo video">
+ <p>The demo video of Confluence plugin show you the plugin in action </p>
+ <iframe width="640" height="390" src="http://www.youtube.com/embed/YFKlXggtld0" frameborder="0" allowfullscreen=""></iframe>
+ </section>
+ </body>
+</document>
[17/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java
index ad8b691..0b62a7e 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java
@@ -1,202 +1,202 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.screenshare;
-
-import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeX;
-import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeY;
-import static org.red5.io.IoConstants.FLAG_CODEC_SCREEN;
-import static org.red5.io.IoConstants.FLAG_FRAMETYPE_INTERFRAME;
-import static org.red5.io.IoConstants.FLAG_FRAMETYPE_KEYFRAME;
-
-import java.awt.Rectangle;
-import java.awt.Robot;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.zip.Deflater;
-
-import org.apache.mina.core.buffer.IoBuffer;
-import org.red5.server.net.rtmp.event.VideoData;
-
-public class ScreenV1Encoder extends BaseScreenEncoder {
- private int[][] last = null;
- private static int KEY_FRAME_INDEX = 25;
- private static int DEFAULT_BLOCK_SIZE = 32;
- private static int DEFAULT_SCREEN_WIDTH = 1920;
- private static int DEFAULT_SCREEN_HEIGHT = 1080;
- private int keyFrameIndex;
- private int frameCount = 0;
- private int blockSize;
- private ByteArrayOutputStream ba = new ByteArrayOutputStream(50 + 3 * DEFAULT_SCREEN_WIDTH * DEFAULT_SCREEN_HEIGHT);
- private byte[] areaBuf = null;
- private Deflater d = new Deflater(Deflater.DEFAULT_COMPRESSION);
- private byte[] zipBuf = null;
- private VideoData unalteredFrame = null;
-
- public ScreenV1Encoder() {
- this(KEY_FRAME_INDEX, DEFAULT_BLOCK_SIZE);
- }
-
- public ScreenV1Encoder(int keyFrameIndex) {
- this(keyFrameIndex, DEFAULT_BLOCK_SIZE);
- }
-
- //will create square blocks
- public ScreenV1Encoder(int keyFrameIndex, int blockSize) {
- this.keyFrameIndex = keyFrameIndex;
- if (blockSize < 16 || blockSize > 256 || blockSize % 16 != 0) {
- throw new RuntimeException("Invalid block size passed: " + blockSize + " should be: 'from 16 to 256 in multiples of 16'");
- }
- this.blockSize = blockSize;
-
- areaBuf = new byte[3 * blockSize * blockSize];
- zipBuf = new byte[3 * blockSize * blockSize];
- }
-
- private static VideoData getData(byte[] data) {
- IoBuffer buf = IoBuffer.allocate(data.length);
- buf.clear();
- buf.put(data);
- buf.flip();
- return new VideoData(buf);
- }
-
- @Override
- public void createUnalteredFrame() throws IOException {
- if (last == null) {
- return;
- }
- if (unalteredFrame == null) {
- ByteArrayOutputStream ba = new ByteArrayOutputStream(200);
-
- Rectangle _area = new Rectangle(resizeX, resizeY);
- //header
- ba.write(getTag(FLAG_FRAMETYPE_INTERFRAME, FLAG_CODEC_SCREEN));
- writeShort(ba, _area.width + ((blockSize / 16 - 1) << 12));
- writeShort(ba, _area.height + ((blockSize / 16 - 1) << 12));
- Rectangle area = getNextBlock(_area, null);
- while (area.width > 0 && area.height > 0) {
- writeShort(ba, 0);
- area = getNextBlock(_area, area);
- }
- unalteredFrame = getData(ba.toByteArray());
- }
- }
-
- @Override
- public VideoData getUnalteredFrame() {
- if (unalteredFrame != null && (frameCount % keyFrameIndex) != 0) {
- frameCount++;
- }
- return unalteredFrame;
- }
-
- @Override
- public synchronized VideoData encode(int[][] img) throws IOException {
- ba.reset();
- Rectangle imgArea = new Rectangle(img.length, img[0].length);
- Rectangle area = getNextBlock(imgArea, null);
- boolean isKeyFrame = (frameCount++ % keyFrameIndex) == 0 || last == null;
-
- //header
- ba.write(getTag(isKeyFrame ? FLAG_FRAMETYPE_KEYFRAME : FLAG_FRAMETYPE_INTERFRAME, FLAG_CODEC_SCREEN));
- writeShort(ba, imgArea.width + ((blockSize / 16 - 1) << 12));
- writeShort(ba, imgArea.height + ((blockSize / 16 - 1) << 12));
-
- while (area.width > 0 && area.height > 0) {
- writeBytesIfChanged(ba, isKeyFrame, img, area);
- area = getNextBlock(imgArea, area);
- }
- last = img;
- return getData(ba.toByteArray());
- }
-
- @Override
- public void reset() {
- last = null;
- unalteredFrame = null;
- }
-
- private Rectangle getNextBlock(Rectangle img, Rectangle _prev) {
- Rectangle prev;
- if (_prev == null) {
- prev = new Rectangle(0, Math.max(0, img.height - blockSize), blockSize, blockSize);
- } else {
- prev = new Rectangle(_prev);
- if (prev.x + prev.width == img.getWidth()) {
- if (prev.y == 0) return new Rectangle(); //the end of the image
- //next row
- prev.x = 0; //reset position
- prev.width = blockSize; //reset width
- prev.height = (prev.y > blockSize ? blockSize : prev.y);
- prev.y -= prev.height;
- } else {
- prev.x += blockSize;
- }
- }
- return img.intersection(prev);
- }
-
- private void writeBytesIfChanged(ByteArrayOutputStream ba, boolean isKeyFrame, int[][] img, Rectangle area) throws IOException {
- boolean changed = isKeyFrame;
- int count = 0;
- for (int y = area.y + area.height - 1; y >= area.y; --y) {
- for (int x = area.x; x < area.x + area.width; ++x) {
- int pixel = img[x][y];
- if (!changed && (last == null || pixel != last[x][y])) {
- changed = true;
- }
- areaBuf[count++] = (byte)(pixel & 0xFF); // Blue component
- areaBuf[count++] = (byte)((pixel >> 8) & 0xFF); // Green component
- areaBuf[count++] = (byte)((pixel >> 16) & 0xFF); // Red component
- }
- }
- if (changed) {
- d.reset();
- d.setInput(areaBuf, 0, count);
- d.finish();
- int written = d.deflate(zipBuf);
- writeShort(ba, written);
- ba.write(zipBuf, 0, written);
- } else {
- writeShort(ba, 0);
- }
- }
-
- public int getTag(final int frame, final int codec) {
- return ((frame & 0x0F) << 4) + ((codec & 0x0F) << 0);
- }
-
- private static void writeShort(OutputStream os, final int n) throws IOException {
- os.write((n >> 8) & 0xFF);
- os.write((n >> 0) & 0xFF);
- }
-
- public static int[][] getImage(Rectangle screen, Robot robot) {
- int[][] buffer = new int[resizeX][resizeY];
- BufferedImage image = resize(robot.createScreenCapture(screen), new Rectangle(resizeX, resizeY));
- for (int x = 0; x < image.getWidth(); ++x) {
- for (int y = 0; y < image.getHeight(); ++y) {
- buffer[x][y] = image.getRGB(x, y);
- }
- }
- return buffer;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.screenshare;
+
+import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeX;
+import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeY;
+import static org.red5.io.IoConstants.FLAG_CODEC_SCREEN;
+import static org.red5.io.IoConstants.FLAG_FRAMETYPE_INTERFRAME;
+import static org.red5.io.IoConstants.FLAG_FRAMETYPE_KEYFRAME;
+
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.zip.Deflater;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.red5.server.net.rtmp.event.VideoData;
+
+public class ScreenV1Encoder extends BaseScreenEncoder {
+ private int[][] last = null;
+ private static int KEY_FRAME_INDEX = 25;
+ private static int DEFAULT_BLOCK_SIZE = 32;
+ private static int DEFAULT_SCREEN_WIDTH = 1920;
+ private static int DEFAULT_SCREEN_HEIGHT = 1080;
+ private int keyFrameIndex;
+ private int frameCount = 0;
+ private int blockSize;
+ private ByteArrayOutputStream ba = new ByteArrayOutputStream(50 + 3 * DEFAULT_SCREEN_WIDTH * DEFAULT_SCREEN_HEIGHT);
+ private byte[] areaBuf = null;
+ private Deflater d = new Deflater(Deflater.DEFAULT_COMPRESSION);
+ private byte[] zipBuf = null;
+ private VideoData unalteredFrame = null;
+
+ public ScreenV1Encoder() {
+ this(KEY_FRAME_INDEX, DEFAULT_BLOCK_SIZE);
+ }
+
+ public ScreenV1Encoder(int keyFrameIndex) {
+ this(keyFrameIndex, DEFAULT_BLOCK_SIZE);
+ }
+
+ //will create square blocks
+ public ScreenV1Encoder(int keyFrameIndex, int blockSize) {
+ this.keyFrameIndex = keyFrameIndex;
+ if (blockSize < 16 || blockSize > 256 || blockSize % 16 != 0) {
+ throw new RuntimeException("Invalid block size passed: " + blockSize + " should be: 'from 16 to 256 in multiples of 16'");
+ }
+ this.blockSize = blockSize;
+
+ areaBuf = new byte[3 * blockSize * blockSize];
+ zipBuf = new byte[3 * blockSize * blockSize];
+ }
+
+ private static VideoData getData(byte[] data) {
+ IoBuffer buf = IoBuffer.allocate(data.length);
+ buf.clear();
+ buf.put(data);
+ buf.flip();
+ return new VideoData(buf);
+ }
+
+ @Override
+ public void createUnalteredFrame() throws IOException {
+ if (last == null) {
+ return;
+ }
+ if (unalteredFrame == null) {
+ ByteArrayOutputStream ba = new ByteArrayOutputStream(200);
+
+ Rectangle _area = new Rectangle(resizeX, resizeY);
+ //header
+ ba.write(getTag(FLAG_FRAMETYPE_INTERFRAME, FLAG_CODEC_SCREEN));
+ writeShort(ba, _area.width + ((blockSize / 16 - 1) << 12));
+ writeShort(ba, _area.height + ((blockSize / 16 - 1) << 12));
+ Rectangle area = getNextBlock(_area, null);
+ while (area.width > 0 && area.height > 0) {
+ writeShort(ba, 0);
+ area = getNextBlock(_area, area);
+ }
+ unalteredFrame = getData(ba.toByteArray());
+ }
+ }
+
+ @Override
+ public VideoData getUnalteredFrame() {
+ if (unalteredFrame != null && (frameCount % keyFrameIndex) != 0) {
+ frameCount++;
+ }
+ return unalteredFrame;
+ }
+
+ @Override
+ public synchronized VideoData encode(int[][] img) throws IOException {
+ ba.reset();
+ Rectangle imgArea = new Rectangle(img.length, img[0].length);
+ Rectangle area = getNextBlock(imgArea, null);
+ boolean isKeyFrame = (frameCount++ % keyFrameIndex) == 0 || last == null;
+
+ //header
+ ba.write(getTag(isKeyFrame ? FLAG_FRAMETYPE_KEYFRAME : FLAG_FRAMETYPE_INTERFRAME, FLAG_CODEC_SCREEN));
+ writeShort(ba, imgArea.width + ((blockSize / 16 - 1) << 12));
+ writeShort(ba, imgArea.height + ((blockSize / 16 - 1) << 12));
+
+ while (area.width > 0 && area.height > 0) {
+ writeBytesIfChanged(ba, isKeyFrame, img, area);
+ area = getNextBlock(imgArea, area);
+ }
+ last = img;
+ return getData(ba.toByteArray());
+ }
+
+ @Override
+ public void reset() {
+ last = null;
+ unalteredFrame = null;
+ }
+
+ private Rectangle getNextBlock(Rectangle img, Rectangle _prev) {
+ Rectangle prev;
+ if (_prev == null) {
+ prev = new Rectangle(0, Math.max(0, img.height - blockSize), blockSize, blockSize);
+ } else {
+ prev = new Rectangle(_prev);
+ if (prev.x + prev.width == img.getWidth()) {
+ if (prev.y == 0) return new Rectangle(); //the end of the image
+ //next row
+ prev.x = 0; //reset position
+ prev.width = blockSize; //reset width
+ prev.height = (prev.y > blockSize ? blockSize : prev.y);
+ prev.y -= prev.height;
+ } else {
+ prev.x += blockSize;
+ }
+ }
+ return img.intersection(prev);
+ }
+
+ private void writeBytesIfChanged(ByteArrayOutputStream ba, boolean isKeyFrame, int[][] img, Rectangle area) throws IOException {
+ boolean changed = isKeyFrame;
+ int count = 0;
+ for (int y = area.y + area.height - 1; y >= area.y; --y) {
+ for (int x = area.x; x < area.x + area.width; ++x) {
+ int pixel = img[x][y];
+ if (!changed && (last == null || pixel != last[x][y])) {
+ changed = true;
+ }
+ areaBuf[count++] = (byte)(pixel & 0xFF); // Blue component
+ areaBuf[count++] = (byte)((pixel >> 8) & 0xFF); // Green component
+ areaBuf[count++] = (byte)((pixel >> 16) & 0xFF); // Red component
+ }
+ }
+ if (changed) {
+ d.reset();
+ d.setInput(areaBuf, 0, count);
+ d.finish();
+ int written = d.deflate(zipBuf);
+ writeShort(ba, written);
+ ba.write(zipBuf, 0, written);
+ } else {
+ writeShort(ba, 0);
+ }
+ }
+
+ public int getTag(final int frame, final int codec) {
+ return ((frame & 0x0F) << 4) + ((codec & 0x0F) << 0);
+ }
+
+ private static void writeShort(OutputStream os, final int n) throws IOException {
+ os.write((n >> 8) & 0xFF);
+ os.write((n >> 0) & 0xFF);
+ }
+
+ public static int[][] getImage(Rectangle screen, Robot robot) {
+ int[][] buffer = new int[resizeX][resizeY];
+ BufferedImage image = resize(robot.createScreenCapture(screen), new Rectangle(resizeX, resizeY));
+ for (int x = 0; x < image.getWidth(); ++x) {
+ for (int y = 0; y < image.getHeight(); ++y) {
+ buffer[x][y] = image.getRGB(x, y);
+ }
+ }
+ return buffer;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/MouseListenerable.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/MouseListenerable.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/MouseListenerable.java
index 1c442dd..33c8ae5 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/MouseListenerable.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/MouseListenerable.java
@@ -1,32 +1,32 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.screenshare.gui;
-
-import java.awt.event.MouseAdapter;
-
-import javax.swing.JLabel;
-
-public class MouseListenerable extends JLabel {
- private static final long serialVersionUID = 1L;
-
- public void addListener(MouseAdapter listner) {
- addMouseListener(listner);
- addMouseMotionListener(listner);
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.screenshare.gui;
+
+import java.awt.event.MouseAdapter;
+
+import javax.swing.JLabel;
+
+public class MouseListenerable extends JLabel {
+ private static final long serialVersionUID = 1L;
+
+ public void addListener(MouseAdapter listner) {
+ addMouseListener(listner);
+ addMouseMotionListener(listner);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/NumberSpinner.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/NumberSpinner.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/NumberSpinner.java
index 22e9edc..d349e16 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/NumberSpinner.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/NumberSpinner.java
@@ -1,35 +1,35 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.screenshare.gui;
-
-import javax.swing.JSpinner;
-import javax.swing.SpinnerNumberModel;
-
-public class NumberSpinner extends JSpinner {
- private static final long serialVersionUID = 1L;
-
- public NumberSpinner(int value, int min, int max, int step) {
- super(new SpinnerNumberModel(value, min, max, step));
- }
-
- @Override
- public Integer getValue() {
- return (Integer)super.getValue();
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.screenshare.gui;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+
+public class NumberSpinner extends JSpinner {
+ private static final long serialVersionUID = 1L;
+
+ public NumberSpinner(int value, int min, int max, int step) {
+ super(new SpinnerNumberModel(value, min, max, step));
+ }
+
+ @Override
+ public Integer getValue() {
+ return (Integer)super.getValue();
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-screenshare/src/main/resources/logback.xsd
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/resources/logback.xsd b/openmeetings-screenshare/src/main/resources/logback.xsd
index 7e75655..cc5ad1c 100644
--- a/openmeetings-screenshare/src/main/resources/logback.xsd
+++ b/openmeetings-screenshare/src/main/resources/logback.xsd
@@ -1,109 +1,109 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
- <xs:element name="configuration">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="contextName"/>
- <xs:element ref="jmxConfigurator"/>
- <xs:element maxOccurs="unbounded" ref="appender"/>
- <xs:element maxOccurs="unbounded" ref="logger"/>
- <xs:element ref="root"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="contextName" type="xs:string"/>
- <xs:element name="jmxConfigurator">
- <xs:complexType>
- <xs:attribute name="contextName" use="required"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="appender">
- <xs:complexType>
- <xs:sequence>
- <xs:sequence minOccurs="0">
- <xs:element ref="File"/>
- <xs:element ref="Append"/>
- <xs:element ref="Encoding"/>
- <xs:element ref="BufferedIO"/>
- <xs:element ref="ImmediateFlush"/>
- </xs:sequence>
- <xs:element ref="layout"/>
- </xs:sequence>
- <xs:attribute name="class" use="required"/>
- <xs:attribute name="name" use="required" type="xs:NCName"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="File" type="xs:string"/>
- <xs:element name="Append" type="xs:boolean"/>
- <xs:element name="Encoding" type="xs:NCName"/>
- <xs:element name="BufferedIO" type="xs:boolean"/>
- <xs:element name="ImmediateFlush" type="xs:boolean"/>
- <xs:element name="layout">
- <xs:complexType>
- <xs:choice>
- <xs:element ref="Pattern"/>
- <xs:element ref="pattern"/>
- </xs:choice>
- <xs:attribute name="class" use="required"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="Pattern" type="xs:string"/>
- <xs:element name="pattern" type="xs:string"/>
- <xs:element name="logger">
- <xs:complexType>
- <xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="appender-ref"/>
- <xs:element maxOccurs="1" minOccurs="0" ref="level"/>
- </xs:sequence>
- <xs:attribute name="name" use="required" type="xs:NCName"/>
- <xs:attribute name="level" type="LoggerLevels" use="optional"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="root">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="appender-ref"/>
- </xs:sequence>
- <xs:attribute name="level" type="LoggerLevels" use="optional"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="appender-ref">
- <xs:complexType>
- <xs:attribute name="ref" use="required" type="xs:NCName"/>
- </xs:complexType>
- </xs:element>
- <xs:complexType name="level">
- <xs:sequence>
- <xs:element ref="level"/>
- </xs:sequence>
- </xs:complexType>
- <xs:element name="level">
- <xs:complexType>
- <xs:attribute name="value" use="required" type="xs:NCName"/>
- </xs:complexType>
- </xs:element>
- <xs:simpleType name="LoggerLevels">
- <xs:restriction base="xs:string">
- <xs:pattern value="off|OFF|all|ALL|inherited|INHERITED|null|NULL|error|ERROR|warn|WARN|info|INFO|debug|DEBUG|trace|TRACE"/>
- </xs:restriction>
- </xs:simpleType>
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="configuration">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="contextName"/>
+ <xs:element ref="jmxConfigurator"/>
+ <xs:element maxOccurs="unbounded" ref="appender"/>
+ <xs:element maxOccurs="unbounded" ref="logger"/>
+ <xs:element ref="root"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="contextName" type="xs:string"/>
+ <xs:element name="jmxConfigurator">
+ <xs:complexType>
+ <xs:attribute name="contextName" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="appender">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:sequence minOccurs="0">
+ <xs:element ref="File"/>
+ <xs:element ref="Append"/>
+ <xs:element ref="Encoding"/>
+ <xs:element ref="BufferedIO"/>
+ <xs:element ref="ImmediateFlush"/>
+ </xs:sequence>
+ <xs:element ref="layout"/>
+ </xs:sequence>
+ <xs:attribute name="class" use="required"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="File" type="xs:string"/>
+ <xs:element name="Append" type="xs:boolean"/>
+ <xs:element name="Encoding" type="xs:NCName"/>
+ <xs:element name="BufferedIO" type="xs:boolean"/>
+ <xs:element name="ImmediateFlush" type="xs:boolean"/>
+ <xs:element name="layout">
+ <xs:complexType>
+ <xs:choice>
+ <xs:element ref="Pattern"/>
+ <xs:element ref="pattern"/>
+ </xs:choice>
+ <xs:attribute name="class" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Pattern" type="xs:string"/>
+ <xs:element name="pattern" type="xs:string"/>
+ <xs:element name="logger">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="appender-ref"/>
+ <xs:element maxOccurs="1" minOccurs="0" ref="level"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="level" type="LoggerLevels" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="root">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="appender-ref"/>
+ </xs:sequence>
+ <xs:attribute name="level" type="LoggerLevels" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="appender-ref">
+ <xs:complexType>
+ <xs:attribute name="ref" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="level">
+ <xs:sequence>
+ <xs:element ref="level"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="level">
+ <xs:complexType>
+ <xs:attribute name="value" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:simpleType name="LoggerLevels">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="off|OFF|all|ALL|inherited|INHERITED|null|NULL|error|ERROR|warn|WARN|info|INFO|debug|DEBUG|trace|TRACE"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-screenshare/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/site/site.xml b/openmeetings-screenshare/src/site/site.xml
index b7a0eae..dd3dc53 100644
--- a/openmeetings-screenshare/src/site/site.xml
+++ b/openmeetings-screenshare/src/site/site.xml
@@ -1,39 +1,39 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu ref="parent"/>
- <menu name="Project">
- <item name="About" href="/index.html" />
- <item name="Info" href="/project-info.html" />
- <item name="Summary" href="/project-summary.html" />
- <item name="License" href="/license.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Dependency Convergence" href="/dependency-convergence.html" />
- <item name="RAT Report" href="/rat-report.html" />
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <bottomNav maxSpan="12">
- <column>Parent Project</column>
- <column>Project</column>
- </bottomNav>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu ref="parent"/>
+ <menu name="Project">
+ <item name="About" href="/index.html" />
+ <item name="Info" href="/project-info.html" />
+ <item name="Summary" href="/project-summary.html" />
+ <item name="License" href="/license.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Dependency Convergence" href="/dependency-convergence.html" />
+ <item name="RAT Report" href="/rat-report.html" />
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <bottomNav maxSpan="12">
+ <column>Parent Project</column>
+ <column>Project</column>
+ </bottomNav>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/main/assembly/jrebel/red5-debug.bat
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/main/assembly/jrebel/red5-debug.bat b/openmeetings-server/src/main/assembly/jrebel/red5-debug.bat
index 9087e9e..59e8e89 100644
--- a/openmeetings-server/src/main/assembly/jrebel/red5-debug.bat
+++ b/openmeetings-server/src/main/assembly/jrebel/red5-debug.bat
@@ -1,19 +1,19 @@
-REM #############################################
-REM Licensed under the Apache License, Version 2.0 (the "License");
-REM you may not use this file except in compliance with the License.
-REM You may obtain a copy of the License at
-REM
-REM http://www.apache.org/licenses/LICENSE-2.0
-REM
-REM Unless required by applicable law or agreed to in writing, software
-REM distributed under the License is distributed on an "AS IS" BASIS,
-REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-REM See the License for the specific language governing permissions and
-REM limitations under the License.
-REM #############################################
-@echo off
-
-if NOT DEFINED RED5_HOME set RED5_HOME=%~dp0
-
-set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -javaagent:@jrebel.home@\jrebel.jar -Drebel.remoting_plugin=true -Dproject.root=@project.home@
-%RED5_HOME%\red5.bat
+REM #############################################
+REM Licensed under the Apache License, Version 2.0 (the "License");
+REM you may not use this file except in compliance with the License.
+REM You may obtain a copy of the License at
+REM
+REM http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM Unless required by applicable law or agreed to in writing, software
+REM distributed under the License is distributed on an "AS IS" BASIS,
+REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+REM See the License for the specific language governing permissions and
+REM limitations under the License.
+REM #############################################
+@echo off
+
+if NOT DEFINED RED5_HOME set RED5_HOME=%~dp0
+
+set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -javaagent:@jrebel.home@\jrebel.jar -Drebel.remoting_plugin=true -Dproject.root=@project.home@
+%RED5_HOME%\red5.bat
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/main/assembly/scripts/admin.bat
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/main/assembly/scripts/admin.bat b/openmeetings-server/src/main/assembly/scripts/admin.bat
index 8ae8ec2..c5a47c2 100644
--- a/openmeetings-server/src/main/assembly/scripts/admin.bat
+++ b/openmeetings-server/src/main/assembly/scripts/admin.bat
@@ -1,21 +1,21 @@
-REM #############################################
-REM Licensed under the Apache License, Version 2.0 (the "License");
-REM you may not use this file except in compliance with the License.
-REM You may obtain a copy of the License at
-REM
-REM http://www.apache.org/licenses/LICENSE-2.0
-REM
-REM Unless required by applicable law or agreed to in writing, software
-REM distributed under the License is distributed on an "AS IS" BASIS,
-REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-REM See the License for the specific language governing permissions and
-REM limitations under the License.
-REM #############################################
-@echo off
-set RED5_HOME=%~dp0
-set OM_CONTEXT=openmeetings
-
-set CLASSPATH=%RED5_HOME%\*;%RED5_HOME%\conf;%RED5_HOME%\plugins\*;%RED5_HOME%\lib\*;%RED5_HOME%\webapps\%OM_CONTEXT%\WEB-INF\lib\*;%RED5_HOME%\webapps\%OM_CONTEXT%\WEB-INF;%RED5_HOME%\webapps\%OM_CONTEXT%\WEB-INF\classes
-
-java -cp "%CLASSPATH%" -Dcontext=%OM_CONTEXT% -Dlogback.ContextSelector=org.red5.logging.LoggingContextSelector org.apache.openmeetings.cli.Admin %*
-
+REM #############################################
+REM Licensed under the Apache License, Version 2.0 (the "License");
+REM you may not use this file except in compliance with the License.
+REM You may obtain a copy of the License at
+REM
+REM http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM Unless required by applicable law or agreed to in writing, software
+REM distributed under the License is distributed on an "AS IS" BASIS,
+REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+REM See the License for the specific language governing permissions and
+REM limitations under the License.
+REM #############################################
+@echo off
+set RED5_HOME=%~dp0
+set OM_CONTEXT=openmeetings
+
+set CLASSPATH=%RED5_HOME%\*;%RED5_HOME%\conf;%RED5_HOME%\plugins\*;%RED5_HOME%\lib\*;%RED5_HOME%\webapps\%OM_CONTEXT%\WEB-INF\lib\*;%RED5_HOME%\webapps\%OM_CONTEXT%\WEB-INF;%RED5_HOME%\webapps\%OM_CONTEXT%\WEB-INF\classes
+
+java -cp "%CLASSPATH%" -Dcontext=%OM_CONTEXT% -Dlogback.ContextSelector=org.red5.logging.LoggingContextSelector org.apache.openmeetings.cli.Admin %*
+
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/site.xml b/openmeetings-server/src/site/site.xml
index d36a3ab..89bd6f1 100644
--- a/openmeetings-server/src/site/site.xml
+++ b/openmeetings-server/src/site/site.xml
@@ -1,140 +1,140 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.6.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.6.0 http://maven.apache.org/xsd/decoration-1.6.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu name="General">
- <item name="Home" href="/index.html"/>
- <item name="License" href="/license.html"/>
- <item name="ASF" href="http://www.apache.org/"/>
- <item name="Call For Logo" href="/CallForLogo.html"/>
- <item name="News archive" href="/NewsArchive.html"/>
- <item name="Security" href="/security.html"/>
- <item name="Commercial Support" href="/commercial-support.html"/>
- </menu>
- <menu name="Installation">
- <item name="Installation" href="/installation.html" />
- <item name="Upgrade" href="/Upgrade.html" />
- <item name="Tutorials" href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools" />
- <item name="Command Line Admin" href="/CommandLineAdmin.html" />
- </menu>
- <menu name="Community">
- <item name="Get Involved" href="/get-involved.html" />
- <item name="Committers" href="/team-list.html" />
- <item name="Our Users" href="/OurUsers.html" />
- <item name="Mailing Lists" href="/mail-lists.html" />
- <item name="Wiki" href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/" />
- </menu>
- <menu name="Development">
- <item name="Source Code" href="/source-repository.html" />
- <item name="Bugs / Issues" href="/issue-tracking.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Continuous Integration" href="/integration.html" />
- <item name="Build Instructions 3.0.x" href="/BuildInstructions_3.0.x.html" />
- <item name="Build Instructions" href="/BuildInstructions.html" />
- <item name="JUnit Testing" href="/JUnitTesting.html" />
- <item name="Manual Testing" href="/ManualTesting.html" />
- <item name="Release Guide" href="/ReleaseGuide.html" />
- <item name="Website Guide" href="/WebsiteGuide.html" />
- </menu>
- <menu name="Configuration">
- <item name="Integration" href="#integration">
- <item name="SOAP/REST API" href="/openmeetings-webservice/apidocs/index.html" target="_blank"/>
- <item name="REST API Sample" href="/RestAPISample.html" />
- <item name="Ldap and ADS" href="/LdapAndADS.html" />
- <item name="OAuth2" href="/oauth2.html" />
- <item name="VoIP and SIP" href="/voip-sip-integration.html" />
- <item name="Errors table" href="/errorvalues.html" />
- </item>
- <item name="Plugins" href="#plugins">
- <item name="Moodle Plugin" href="/MoodlePlugin.html" />
- <item name="Sakai Plugin" href="/SakaiPlugin.html" />
- <item name="Jira Plugin" href="/JiraPlugin.html" />
- <item name="Joomla Plugin" href="/JoomlaPlugin.html" />
- <item name="Drupal Plugin" href="/DrupalPlugin.html" />
- <item name="Bitrix Plugin" href="/BitrixPlugin.html" />
- <item name="Confluence Plugin" href="/ConfluencePlugin.html" />
- <item name="SugarCRM Plugin" href="/SugarCRMPlugin.html" />
- <item name="Redmine Plugin" href="/RedminePlugin.html" />
- </item>
- <item name="DB Sample Configurations" href="#db">
- <item name="Apache Derby" href="/ApacheDerbyConfig.html" />
- <item name="IBM DB2" href="/IBMDB2Config.html" />
- <item name="Oracle" href="/OracleConfig.html" />
- <item name="MySQL" href="/MySQLConfig.html" />
- <item name="Postgres" href="/PostgresConfig.html" />
- <item name="MSSQL" href="/MSSQLConfig.html" />
- </item>
- <item name="Localization and languages" href="#localization">
- <item name="Internationalisation" href="/Internationalisation.html" />
- <item name="LanguageEditor" href="/LanguageEditor.html" />
- <item name="TimeZoneHandling" href="/TimeZoneHandling.html" />
- <item name="EditTemplates" href="/EditTemplates.html" />
- </item>
- <item name="NAT Port Settings" href="#port">
- <item name="Port settings" href="/PortSettings.html" />
- </item>
- <item name="Performance" href="#performance">
- <item name="JVM performance tuning" href="/JVMPerformanceTuning.html" />
- <item name="Network bandwidth calculator" href="/NetworkCalculator.html" />
- </item>
- <item name="User Interface" href="#interface">
- <item name="Themes" href="/themes-and-branding.html" />
- <item name="Dashboard" href="/Dashboard.html" />
- <item name="Webcam resolutions" href="/WebcamResolutions.html" />
- <item name="Room layout options" href="/ConferenceRoomLayoutOptions.html" />
- <item name="Hot Keys" href="/HotKeys.html" />
- </item>
- <item name="Customization" href="#customize">
- <item name="Webapp name/path" href="/WebappNamePath.html" />
- <item name="Navigation" href="/Navigation.html" />
- <item name="Calendar and timezone" href="/CalendarAndTimezone.html" />
- <item name="Custom room type" href="/CustomRoomTypeHowTo.html" />
- <item name="Custom crypt mechanism" href="/CustomCryptMechanism.html" />
- <item name="General Configuration" href="/GeneralConfiguration.html" />
- </item>
- <item name="Security" href="#security">
- <item name="Restricted Access" href="/RestrictedAccess.html" />
- <item name="RTMPS and HTTPS" href="/RTMPSAndHTTPS.html" />
- </item>
- <item name="Converters" href="#convert">
- <item name="OpenOffice Converter" href="/OpenOfficeConverter.html" />
- </item>
- <item name="Clustering" href="#cluster">
- <item name="Clustering" href="/Clustering.html" />
- </item>
- <item name="Misc" href="#misc">
- <item name="Get version info" href="/GetVersionInfo.html" />
- </item>
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <pages>
- <index>
- <sections>
- <carousel/>
- </sections>
- </index>
- </pages>
- <endContent>
- <script type="text/javascript" src="$resourcePath/js/jquery-ui.min.js"></script>
- <script type="text/javascript" src="$resourcePath/js/netcalc.js"></script>
- </endContent>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.6.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.6.0 http://maven.apache.org/xsd/decoration-1.6.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu name="General">
+ <item name="Home" href="/index.html"/>
+ <item name="License" href="/license.html"/>
+ <item name="ASF" href="http://www.apache.org/"/>
+ <item name="Call For Logo" href="/CallForLogo.html"/>
+ <item name="News archive" href="/NewsArchive.html"/>
+ <item name="Security" href="/security.html"/>
+ <item name="Commercial Support" href="/commercial-support.html"/>
+ </menu>
+ <menu name="Installation">
+ <item name="Installation" href="/installation.html" />
+ <item name="Upgrade" href="/Upgrade.html" />
+ <item name="Tutorials" href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools" />
+ <item name="Command Line Admin" href="/CommandLineAdmin.html" />
+ </menu>
+ <menu name="Community">
+ <item name="Get Involved" href="/get-involved.html" />
+ <item name="Committers" href="/team-list.html" />
+ <item name="Our Users" href="/OurUsers.html" />
+ <item name="Mailing Lists" href="/mail-lists.html" />
+ <item name="Wiki" href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/" />
+ </menu>
+ <menu name="Development">
+ <item name="Source Code" href="/source-repository.html" />
+ <item name="Bugs / Issues" href="/issue-tracking.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Continuous Integration" href="/integration.html" />
+ <item name="Build Instructions 3.0.x" href="/BuildInstructions_3.0.x.html" />
+ <item name="Build Instructions" href="/BuildInstructions.html" />
+ <item name="JUnit Testing" href="/JUnitTesting.html" />
+ <item name="Manual Testing" href="/ManualTesting.html" />
+ <item name="Release Guide" href="/ReleaseGuide.html" />
+ <item name="Website Guide" href="/WebsiteGuide.html" />
+ </menu>
+ <menu name="Configuration">
+ <item name="Integration" href="#integration">
+ <item name="SOAP/REST API" href="/openmeetings-webservice/apidocs/index.html" target="_blank"/>
+ <item name="REST API Sample" href="/RestAPISample.html" />
+ <item name="Ldap and ADS" href="/LdapAndADS.html" />
+ <item name="OAuth2" href="/oauth2.html" />
+ <item name="VoIP and SIP" href="/voip-sip-integration.html" />
+ <item name="Errors table" href="/errorvalues.html" />
+ </item>
+ <item name="Plugins" href="#plugins">
+ <item name="Moodle Plugin" href="/MoodlePlugin.html" />
+ <item name="Sakai Plugin" href="/SakaiPlugin.html" />
+ <item name="Jira Plugin" href="/JiraPlugin.html" />
+ <item name="Joomla Plugin" href="/JoomlaPlugin.html" />
+ <item name="Drupal Plugin" href="/DrupalPlugin.html" />
+ <item name="Bitrix Plugin" href="/BitrixPlugin.html" />
+ <item name="Confluence Plugin" href="/ConfluencePlugin.html" />
+ <item name="SugarCRM Plugin" href="/SugarCRMPlugin.html" />
+ <item name="Redmine Plugin" href="/RedminePlugin.html" />
+ </item>
+ <item name="DB Sample Configurations" href="#db">
+ <item name="Apache Derby" href="/ApacheDerbyConfig.html" />
+ <item name="IBM DB2" href="/IBMDB2Config.html" />
+ <item name="Oracle" href="/OracleConfig.html" />
+ <item name="MySQL" href="/MySQLConfig.html" />
+ <item name="Postgres" href="/PostgresConfig.html" />
+ <item name="MSSQL" href="/MSSQLConfig.html" />
+ </item>
+ <item name="Localization and languages" href="#localization">
+ <item name="Internationalisation" href="/Internationalisation.html" />
+ <item name="LanguageEditor" href="/LanguageEditor.html" />
+ <item name="TimeZoneHandling" href="/TimeZoneHandling.html" />
+ <item name="EditTemplates" href="/EditTemplates.html" />
+ </item>
+ <item name="NAT Port Settings" href="#port">
+ <item name="Port settings" href="/PortSettings.html" />
+ </item>
+ <item name="Performance" href="#performance">
+ <item name="JVM performance tuning" href="/JVMPerformanceTuning.html" />
+ <item name="Network bandwidth calculator" href="/NetworkCalculator.html" />
+ </item>
+ <item name="User Interface" href="#interface">
+ <item name="Themes" href="/themes-and-branding.html" />
+ <item name="Dashboard" href="/Dashboard.html" />
+ <item name="Webcam resolutions" href="/WebcamResolutions.html" />
+ <item name="Room layout options" href="/ConferenceRoomLayoutOptions.html" />
+ <item name="Hot Keys" href="/HotKeys.html" />
+ </item>
+ <item name="Customization" href="#customize">
+ <item name="Webapp name/path" href="/WebappNamePath.html" />
+ <item name="Navigation" href="/Navigation.html" />
+ <item name="Calendar and timezone" href="/CalendarAndTimezone.html" />
+ <item name="Custom room type" href="/CustomRoomTypeHowTo.html" />
+ <item name="Custom crypt mechanism" href="/CustomCryptMechanism.html" />
+ <item name="General Configuration" href="/GeneralConfiguration.html" />
+ </item>
+ <item name="Security" href="#security">
+ <item name="Restricted Access" href="/RestrictedAccess.html" />
+ <item name="RTMPS and HTTPS" href="/RTMPSAndHTTPS.html" />
+ </item>
+ <item name="Converters" href="#convert">
+ <item name="OpenOffice Converter" href="/OpenOfficeConverter.html" />
+ </item>
+ <item name="Clustering" href="#cluster">
+ <item name="Clustering" href="/Clustering.html" />
+ </item>
+ <item name="Misc" href="#misc">
+ <item name="Get version info" href="/GetVersionInfo.html" />
+ </item>
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <pages>
+ <index>
+ <sections>
+ <carousel/>
+ </sections>
+ </index>
+ </pages>
+ <endContent>
+ <script type="text/javascript" src="$resourcePath/js/jquery-ui.min.js"></script>
+ <script type="text/javascript" src="$resourcePath/js/netcalc.js"></script>
+ </endContent>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/stylesheets/errortable.xsl
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/stylesheets/errortable.xsl b/openmeetings-server/src/site/stylesheets/errortable.xsl
index 5748361..dbf72de 100644
--- a/openmeetings-server/src/site/stylesheets/errortable.xsl
+++ b/openmeetings-server/src/site/stylesheets/errortable.xsl
@@ -1,67 +1,67 @@
-<?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.
- -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:param name="languagesDir"/>
- <xsl:output method="xml"/>
-
- <xsl:template match="ROOT">
-<document>
-<xsl:comment>
- 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.
- </xsl:comment>
- <properties>
- <title>Openmeetings Errors table</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Documentation Robot</author>
- </properties>
- <body>
- <section name="Openmeetings Errors table">
- <table>
- <tr>
- <th>Code</th>
- <th>Type</th>
- <th>Description</th>
- </tr>
- <xsl:apply-templates/>
- </table>
- </section>
- </body>
-</document>
- </xsl:template>
-
- <xsl:template match="row">
- <xsl:variable name="englishPath"><xsl:value-of select="concat($languagesDir, '/Application.properties.xml')"/></xsl:variable>
- <tr>
- <td>-<xsl:value-of select="field[@name='errorvalues_id']"/></td>
- <td>
- <xsl:variable name="type" select="concat('error.type.', field[@name='type'])"/>
- <xsl:value-of select="document($englishPath)/properties/entry[@key=$type]/text()" />
- </td>
- <td>
- <xsl:variable name="descId" select="field[@name='fieldvalues_id']"/>
- <xsl:value-of select="document($englishPath)/properties/entry[@key=$descId]/text()" />
- </td>
- </tr>
- </xsl:template>
-</xsl:stylesheet>
+<?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.
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:param name="languagesDir"/>
+ <xsl:output method="xml"/>
+
+ <xsl:template match="ROOT">
+<document>
+<xsl:comment>
+ 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.
+ </xsl:comment>
+ <properties>
+ <title>Openmeetings Errors table</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Documentation Robot</author>
+ </properties>
+ <body>
+ <section name="Openmeetings Errors table">
+ <table>
+ <tr>
+ <th>Code</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <xsl:apply-templates/>
+ </table>
+ </section>
+ </body>
+</document>
+ </xsl:template>
+
+ <xsl:template match="row">
+ <xsl:variable name="englishPath"><xsl:value-of select="concat($languagesDir, '/Application.properties.xml')"/></xsl:variable>
+ <tr>
+ <td>-<xsl:value-of select="field[@name='errorvalues_id']"/></td>
+ <td>
+ <xsl:variable name="type" select="concat('error.type.', field[@name='type'])"/>
+ <xsl:value-of select="document($englishPath)/properties/entry[@key=$type]/text()" />
+ </td>
+ <td>
+ <xsl:variable name="descId" select="field[@name='fieldvalues_id']"/>
+ <xsl:value-of select="document($englishPath)/properties/entry[@key=$descId]/text()" />
+ </td>
+ </tr>
+ </xsl:template>
+</xsl:stylesheet>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/ApacheDerbyConfig.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/ApacheDerbyConfig.xml b/openmeetings-server/src/site/xdoc/ApacheDerbyConfig.xml
index d251f47..a3071ba 100644
--- a/openmeetings-server/src/site/xdoc/ApacheDerbyConfig.xml
+++ b/openmeetings-server/src/site/xdoc/ApacheDerbyConfig.xml
@@ -1,57 +1,57 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Apache Derby Configuration</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Apache Derby Configuration">
-
- <p>
- OpenMeetings default configuration is to use Apache Derby.
- </p>
-
- <p>
- It is recommended for production environments and high
- availibility to change to an usual relational database like MySQL,
- Postgres or DB2.
- </p>
- <p>
- For more information about Apache Derby see
- <a href="http://db.apache.org/derby/">http://db.apache.org/derby/</a>
- </p>
-
- <p>
- There is a sample configuration for Apache Derby that ships with
- every release in:
- <br />
- /webapps/openmeetings/WEB-INF/classes/META-INF/derby_persistence.xml
- </p>
-
- <p>
- If you encounter issues, you can drop the db and then run the web
- based installer again
- </p>
-
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Apache Derby Configuration</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Apache Derby Configuration">
+
+ <p>
+ OpenMeetings default configuration is to use Apache Derby.
+ </p>
+
+ <p>
+ It is recommended for production environments and high
+ availibility to change to an usual relational database like MySQL,
+ Postgres or DB2.
+ </p>
+ <p>
+ For more information about Apache Derby see
+ <a href="http://db.apache.org/derby/">http://db.apache.org/derby/</a>
+ </p>
+
+ <p>
+ There is a sample configuration for Apache Derby that ships with
+ every release in:
+ <br />
+ /webapps/openmeetings/WEB-INF/classes/META-INF/derby_persistence.xml
+ </p>
+
+ <p>
+ If you encounter issues, you can drop the db and then run the web
+ based installer again
+ </p>
+
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/BitrixPlugin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/BitrixPlugin.xml b/openmeetings-server/src/site/xdoc/BitrixPlugin.xml
index 00e93b4..f7b7f90 100644
--- a/openmeetings-server/src/site/xdoc/BitrixPlugin.xml
+++ b/openmeetings-server/src/site/xdoc/BitrixPlugin.xml
@@ -1,48 +1,48 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Bitrix Plugin</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="OpenMeetings Plugin for Bitrix">
- <p>
- Plugin for Bitrix currently is not open source.
- Please contact <a href="commercial-support.html" target="_blank" rel="nofollow">Commercial Support</a> to get it.
- </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>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Bitrix Plugin</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="OpenMeetings Plugin for Bitrix">
+ <p>
+ Plugin for Bitrix currently is not open source.
+ Please contact <a href="commercial-support.html" target="_blank" rel="nofollow">Commercial Support</a> to get it.
+ </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>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/BuildInstructions.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/BuildInstructions.xml b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
index c6af2af..7fbd84f 100644
--- a/openmeetings-server/src/site/xdoc/BuildInstructions.xml
+++ b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
@@ -1,105 +1,105 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Build instructions</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Nightly Builds">
- <p>
- You can find Nightly Builds of the software at:
- <a href="https://builds.apache.org/view/M-R/view/OpenMeetings/" rel="nofollow" target="_blank">
- https://builds.apache.org/view/M-R/view/OpenMeetings/
- </a>
- </p>
- </section>
-
- <section name="How to Build a Distribution">
- <div>
- <p>To build a binary release of OpenMeetings you need: </p>
- <ul>
- <li>Oracle JDK8</li>
- <li>Apache Maven (minimum) 3.3.9</li>
- <li>Git</li>
- </ul>
- </div>
-
- <p>Get the source: </p>
- <source><![CDATA[git clone https://git-wip-us.apache.org/repos/asf/openmeetings.git]]></source>
- <p>Run the command: </p>
- <source><![CDATA[mvn clean install -P allModules]]></source>
- </section>
-
- <section name="Run, Develop, Test">
- <p>
- To develop Openmeetings you need to import maven project into Eclipse
- <img src="images/eclipse-import-maven-project.png" alt="Import OM into Eclipse" width="526" height="394" />
- </p>
- </section>
- <section name="Check for updates">
- <source>mvn versions:display-dependency-updates</source>
- <source>mvn versions:display-plugin-updates</source>
- <source>mvn versions:display-property-updates</source>
- </section>
- <section name="Check dependencies">
- <source>mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.0:analyze-only</source>
- </section>
- <section name="Tips and Gotchas">
- <p>To compile only client you can run following command: </p>
- <source>
-<![CDATA[
-mvn install -P allModules -pl openmeetings-flash # compiles a complete package into the folder openmeetings-flash/target
-]]>
- </source>
- <p>In case you would like to develop Openmeetings you need to run <i>"unpacked"</i> build: </p>
- <source>
-<![CDATA[
-mvn clean install -P allModules,unpacked,mysql,default-db-cred -DskipTests=true -Dwicket.mode=DEVELOPMENT
-]]>
- </source>
- <p>After modifications are made you can run <i>"quick"</i> build: </p>
- <source>
-<![CDATA[
-mvn install -P allModules,quick,mysql,default-db-cred -pl openmeetings-web -pl openmeetings-server -Dwicket.mode=DEVELOPMENT
-]]>
- </source>
- <p>Any number of projects can be specified during build: </p>
- <source>
-<![CDATA[
-mvn install -P allModules,quick,mysql,default-db-cred -pl openmeetings-util -pl openmeetings-db -pl openmeetings-core -pl openmeetings-install -pl openmeetings-service -pl openmeetings-web -pl openmeetings-server -pl openmeetings-webservice -Dwicket.mode=DEVELOPMENT
-]]>
- </source>
- <div>
- <b>Working behind a proxy:</b>
- If you are sitting behind a proxy you should add some proxy settings before starting the build process.
- <br />
- <source>git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080</source>
- <ul>
- <li>change <tt>proxyuser</tt> to your proxy user</li>
- <li>change <tt>proxypwd</tt> to your proxy password</li>
- <li>change <tt>proxy.server.com</tt> to the URL of your proxy server</li>
- <li>change <tt>8080</tt> to the proxy port configured on your proxy server</li>
- </ul>
- </div>
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Build instructions</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Nightly Builds">
+ <p>
+ You can find Nightly Builds of the software at:
+ <a href="https://builds.apache.org/view/M-R/view/OpenMeetings/" rel="nofollow" target="_blank">
+ https://builds.apache.org/view/M-R/view/OpenMeetings/
+ </a>
+ </p>
+ </section>
+
+ <section name="How to Build a Distribution">
+ <div>
+ <p>To build a binary release of OpenMeetings you need: </p>
+ <ul>
+ <li>Oracle JDK8</li>
+ <li>Apache Maven (minimum) 3.3.9</li>
+ <li>Git</li>
+ </ul>
+ </div>
+
+ <p>Get the source: </p>
+ <source><![CDATA[git clone https://git-wip-us.apache.org/repos/asf/openmeetings.git]]></source>
+ <p>Run the command: </p>
+ <source><![CDATA[mvn clean install -P allModules]]></source>
+ </section>
+
+ <section name="Run, Develop, Test">
+ <p>
+ To develop Openmeetings you need to import maven project into Eclipse
+ <img src="images/eclipse-import-maven-project.png" alt="Import OM into Eclipse" width="526" height="394" />
+ </p>
+ </section>
+ <section name="Check for updates">
+ <source>mvn versions:display-dependency-updates</source>
+ <source>mvn versions:display-plugin-updates</source>
+ <source>mvn versions:display-property-updates</source>
+ </section>
+ <section name="Check dependencies">
+ <source>mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.0:analyze-only</source>
+ </section>
+ <section name="Tips and Gotchas">
+ <p>To compile only client you can run following command: </p>
+ <source>
+<![CDATA[
+mvn install -P allModules -pl openmeetings-flash # compiles a complete package into the folder openmeetings-flash/target
+]]>
+ </source>
+ <p>In case you would like to develop Openmeetings you need to run <i>"unpacked"</i> build: </p>
+ <source>
+<![CDATA[
+mvn clean install -P allModules,unpacked,mysql,default-db-cred -DskipTests=true -Dwicket.mode=DEVELOPMENT
+]]>
+ </source>
+ <p>After modifications are made you can run <i>"quick"</i> build: </p>
+ <source>
+<![CDATA[
+mvn install -P allModules,quick,mysql,default-db-cred -pl openmeetings-web -pl openmeetings-server -Dwicket.mode=DEVELOPMENT
+]]>
+ </source>
+ <p>Any number of projects can be specified during build: </p>
+ <source>
+<![CDATA[
+mvn install -P allModules,quick,mysql,default-db-cred -pl openmeetings-util -pl openmeetings-db -pl openmeetings-core -pl openmeetings-install -pl openmeetings-service -pl openmeetings-web -pl openmeetings-server -pl openmeetings-webservice -Dwicket.mode=DEVELOPMENT
+]]>
+ </source>
+ <div>
+ <b>Working behind a proxy:</b>
+ If you are sitting behind a proxy you should add some proxy settings before starting the build process.
+ <br />
+ <source>git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080</source>
+ <ul>
+ <li>change <tt>proxyuser</tt> to your proxy user</li>
+ <li>change <tt>proxypwd</tt> to your proxy password</li>
+ <li>change <tt>proxy.server.com</tt> to the URL of your proxy server</li>
+ <li>change <tt>8080</tt> to the proxy port configured on your proxy server</li>
+ </ul>
+ </div>
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
[22/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx b/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
index 2cc1c0f..47a9ad1 100644
--- a/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
+++ b/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
@@ -1,815 +1,815 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="commonVideoViewContentSWF10" extends="view">
- <switch>
- <when property="$as3">
- <passthrough>
- import flash.external.ExternalInterface;
- import flash.media.Camera;
- import flash.media.Microphone;
- import flash.media.MicrophoneEnhancedMode;
- import flash.media.MicrophoneEnhancedOptions;
- import flash.media.SoundCodec;
- import flash.net.SharedObject;
- </passthrough>
- </when>
- </switch>
-
- <attribute name="offsetLength" type="number" value="40"/>
- <attribute name="videoWidth" type="number" value="132"/>
- <attribute name="videoHeight" type="number" value="132"/>
- <attribute name="SIDEPANEL_WIDTH" type="number" value="270" />
- <attribute name="baseVideoStream" value="null" />
-
- <method name="toggleVideo" args="value">
- if($debug) Debug.info("toggleVideo ", canvas.currentClient, value);
- canvas.currentClient.canVideo = value;
- </method>
-
- <method name="createEditRecordStream" args="isInterview">
- if($debug) Debug.info("createEditRecordStream,", isInterview);
- new lz.editRecordStreamSWF10(canvas, {
- isInterview: isInterview,
- });
- </method>
-
- <method name="batchCreateVideo" args="clients">
- <![CDATA[
- if ($debug) Debug.info("batchCreateVideo: ", clients.length);
- for (var i = 0; i < clients.length; ++i) {
- var c = clients[i];
- if (c.streamid != canvas.streamid) {
- if (c.isBroadcasting) {
- createVideo(c);
- } else {
- createVideoObject(c.publicSID, false, c.interviewPodId, c);
- }
- }
- }
- ]]>
- </method>
-
- <!--
- Method that creates the video views when another user enters a room and his
- item in the list of participants is created.
- The method to "play" the stream is invoked later, when the user
- really starts to stream and not only when he just enters the room.
- -->
- <method name="createVideoObject" args="publicSID, isBroadcasting, interviewPodId, object">
- if($debug) Debug.info("createVideoObject, publicSID: ",publicSID, "isBroadcasting: ", isBroadcasting, "object", object);
- var vidContainer = getVideoObjectByPublicSID(publicSID);
- if (vidContainer == null) {
- vidContainer = isBroadcasting ? this.getNewVideoObject(publicSID) : this.getNewVideoObjectByPos(publicSID);
- vidContainer.publicSID = publicSID;
- }
- if ($debug) Debug.write("Is interview ? ", canvas.isInterview);
- placeInterviewPod(vidContainer, interviewPodId);
- vidContainer.clientVars = object;
- vidContainer.setAttribute('visible', false);
- return vidContainer;
- </method>
-
- <method name="placeInterviewPod" args="vidContainer, interviewPodId">
- <![CDATA[
- if ($debug) Debug.write("placeInterviewPod::Is interview ", canvas.isInterview, interviewPodId);
- if (canvas.isInterview && interviewPodId != null && interviewPodId > 0) {
- if (interviewPodId != null) {
- vidContainer.setAttribute("interviewPodId", interviewPodId);
- var cont = canvas._drawarea._videoviewcontent;
- var box = cont['interviewVideoBox' + interviewPodId];
- if (!!box) {
- vidContainer.setAttribute("x", cont.x + box.x);
- vidContainer.setAttribute("y", box.y);
- }
- }
- vidContainer.setAttribute("width", 322);
- vidContainer.setAttribute("height", 281);
- }
- ]]>
- </method>
-
- <method name="setPartnerName" args="obj, first, last=null">
- if (!obj) {
- return;
- }
- var dispName = !last ? first : first + ' ' + last;
- obj.setAttribute('chatpartnername', dispName);
- </method>
-
- <!--
- Method that creates the video views when user(self) initially entering a room.
- Creates the video-view AND starts to stream/play the video
- -->
- <method name="createVideo" args="cl">
- <![CDATA[
- if ($debug) Debug.info("createVideo::: ", cl.publicSID, cl.broadCastID, cl.avsettings, cl.interviewPodId);
- if ($debug) Debug.write(" createVideo ALL vars ", cl);
- var vidContainer = getVideoObjectByPublicSID(cl.publicSID);
- if (cl.avsettings != 'n') {
- if (vidContainer == null) {
- vidContainer = getNewVideoObjectByPos(cl.publicSID);
- }
- vidContainer.clientVars = cl;
- setPartnerName(vidContainer, cl.firstname, cl.lastname);
- switch (cl.avsettings) {
- case 'a':
- if ($debug) Debug.warn("start play");
- vidContainer._chatvideoinner._videostream.playStream(cl.broadCastID, -1);
- break;
- case 'v':
- case 'av':
- //this means avsettings is either: "v" or "av"
- vidContainer._chatvideoinner._videostream.playStream(cl.broadCastID, -1);
- break;
- case 'n':
- default:
- break;
- }
- vidContainer.updateAVSettingsSymbol(cl);
- if (cl.micMuted) {
- vidContainer.setMicMuted(cl.micMuted);
- }
- if ($debug) Debug.write(" createVideo ALL vars ", vidContainer);
- placeInterviewPod(vidContainer, cl.interviewPodId);
- }
- enableRecordingButton();
- return vidContainer;
- ]]>
- </method>
-
- <method name="getVideoObjectByPublicSID" args="publicSID">
- <![CDATA[
- //if ($debug) Debug.write("getVideoObjectByPublicSid SEARCH: ", publicSID);
- for (var i = 0; i < this.subviews.length; ++i) {
- //if ($debug) Debug.write("this.subviews[i].publicSID ", this.subviews[i].publicSID);
- if (this.subviews[i].publicSID == publicSID) {
- return this.subviews[i];
- }
- }
- if ($debug) Debug.warn(" - getVideoObjectByPublicSID - DID NOT FIND THE USER BY ", publicSID);
- return null;
- ]]>
- </method>
-
- <method name="getNewVideoObjectByPos" args="publicSID">
- <![CDATA[
- //Get a Free VideoView Slot
- var freePos = this.getVideoObjectFreePos(this.offsetLength,this.videoWidth,this.videoHeight);
-
- return new lz.videoObjectPlayBroadcast(this,{
- publicSID:publicSID,
- width:videoWidth,
- height:videoHeight,
- x:freePos[0],
- y:freePos[1],
- isInterview:canvas.isInterview
- });
- ]]>
- </method>
-
- <method name="getNewVideoObject" args="publicSID">
- <![CDATA[
- this.broadCastViewRef = getNewVideoObjectByPos(publicSID);
- this.broadCastViewRef._chatvideoinner.r.destroy();
- if ($debug) Debug.write("getNewVideoObject canvas.currentClient ",publicSID, canvas.currentClient);
- setPartnerName(this.broadCastViewRef, canvas.currentClient.firstname, canvas.currentClient.lastname);
- return this.broadCastViewRef;
- ]]>
- </method>
-
- <method name="enableRecordingButton">
- <![CDATA[
- var count = 0;
- for (var i = 0; i < this.subviews.length; ++i) {
- if (this.subviews[i].visible) {
- count++;
- }
- }
- if (canvas.isInterview) {
- if (count > 0 && !canvas._drawarea._interview._stop.enabled) {
- canvas._drawarea._interview._start.setAttribute('enabled', true);
- } else if (count == 0 && canvas._drawarea._interview._start.enabled) {
- canvas._drawarea._interview._start.setAttribute('enabled', false);
- }
- }
- ]]>
- </method>
-
- <method name="getVideoObjectFreePos" args="offsetLength,videoWidth,videoHeight">
- <![CDATA[
- if (canvas.isInterview) {
- return [0, 0];
- }
- var newx = 20;
- if (canvas.currentRoomObj.hideWhiteboard) {
- newx += SIDEPANEL_WIDTH;
- }
- var newy = 0;
- var posFound = false;
- if (offsetLength == undefined) {
- offsetLength=10;
- }
- while (!posFound) {
- posFound = true;
- for (var i=0;i<this.subviews.length;i++){
- var subview = this.subviews[i];
- var left = subview.x;
- var right = subview.x + subview.width;
- var top = subview.y;
- var bottom = subview.y + subview.height;
-
- if( !(newx > right
- || (newx + videoWidth) < left
- || newy > bottom
- || (newy + videoHeight) < top ))
- {
- newx = right + offsetLength;
- posFound = false;
- }
- if ((newx + videoWidth) >= canvas.width) {
- newx = 20;
- if (canvas.currentRoomObj.hideWhiteboard) {
- newx += SIDEPANEL_WIDTH;
- }
- newy += 10;
- posFound = false;
- }
- }
- }
-
- if ((newy + videoHeight) >= canvas.height) {
- newy = 0;
- }
- return [newx, newy];
- ]]>
- </method>
-
- <method name="muteSound" args="publicSID, bool">
- <![CDATA[
- var obj = this.getVideoObjectByPublicSID(publicSID);
- if (obj != null) {
- obj.silenceMicrophone(bool);
- }
- return;
- ]]>
- </method>
-
- <method name="resetAllValues">
- for (var eg in this.subviews){
- this.subviews[eg].resetValues();
- }
- return;
- </method>
-
- <method name="closeStreamclient" args="publicSID">
- <![CDATA[
- if ($debug) Debug.write("closeStream this: ", publicSID);
- var obj = this.getVideoObjectByPublicSID(publicSID);
- if ($debug) Debug.write("closeStream this obj: ", obj);
- if (obj != null) {
- obj.resetValues();
- }
- if (canvas.publicSID == publicSID && canvas.editRecordStream != null) {
- canvas.editRecordStream.destroy();
- }
- return obj;
- ]]>
- </method>
-
- <method name="removeVideoByUser" args="publicSID"><![CDATA[
- if ($debug) Debug.write("removeVideoByUser: ", publicSID);
- var obj = closeStreamclient(publicSID);
- if (obj == null) {
- if ($debug) Debug.warn("Could Not find this To removeVideoByUser", publicSID);
- } else {
- obj.destroy();
- enableRecordingButton();
- }
- ]]></method>
-
- <method name="updateMuteStatusVideoView" args="roomClient">
- <![CDATA[
- var obj = this.getVideoObjectByPublicSID(roomClient.publicSID);
- if (obj != null) {
- obj.muteMicrophone(roomClient);
- }
- ]]>
- </method>
-
- <method name="setSpeakingByPos" args="publicSID,bool">
- <![CDATA[
- //if ($debug) Debug.write("setSpeakingByPos ",publicSID,bool);
- var obj = this.getVideoObjectByPublicSID(publicSID);
- if (obj == null) {
- if ($debug) Debug.warn("Could not find user for setSpeakingByPos ",publicSID,bool);
- return;
- }
- obj._loudness.setSpeaking(bool);
- ]]>
- </method>
-
- <method name="setAVSettingsToClient" args="rcl">
- <![CDATA[
- if ($debug) Debug.write("setAVSettingsToClient: ", rcl.publicSID, rcl);
- var obj = this.getVideoObjectByPublicSID(rcl.publicSID);
- if ($debug) Debug.write("setAVSettingsToClient: ", obj, rcl.avsettings);
- if (obj == null) {
- obj = this.getNewVideoObjectByPos(rcl.publicSID);
- }
- obj.thisVars = rcl;
- obj.updateAVSettingsSymbol(rcl);
- var v = ("a" == rcl.avsettings && obj.isInterview) || ("a" != rcl.avsettings && rcl.avsettings != "n");
- obj.setAttribute("visible", "n" != rcl.avsettings);
- if ($debug) Debug.write("setAVSettingsToClient: ", v, obj.visible);
- ]]>
- </method>
-
- <method name="startStream" args="value">
- <![CDATA[
- //value.publicSID,value.broadCastID,value.firstname,value.lastname,value.interviewPodId,value.VWidth,value.VHeight
-
- if ($debug) Debug.write("startStream: ", value);
- createVideo(value);
- ]]>
- </method>
-
- <!---
- Clear all views, probably this is called whenever a user leaves the room for example
- -->
- <method name="clearAll">
- <![CDATA[
- if ($debug) Debug.write("clearAll", this.subviews);
- while(this.subviews.length > 0) {
- if (this.subviews[0]._chatvideoinner != null) {
- this.subviews[0]._chatvideoinner._videostream._stop();
- }
- this.subviews[0].destroy();
- }
- if (canvas.editRecordStream != null) {
- canvas.editRecordStream.destroy();
- }
- return;
- ]]>
- </method>
-
- <method name="setExclusiveAudioAllowStatus" args="canGiveAudio">
- <![CDATA[
- if ($debug) Debug.write("setExclusiveAudioAllowStatus :: ",canGiveAudio);
- canvas.setAttribute("isAllowedToGiveExclusiveAudio",canGiveAudio);
- return;
- ]]>
- </method>
-
- <method name="updateFirstLastName" args="publicSID, first, last">
- setPartnerName(getVideoObjectByPublicSID(publicSID), first, last);
- </method>
-
- <!-- arranges video pods -->
- <method name="arrangeWindows">
- <![CDATA[
- if ($debug) Debug.write("arrangeWindows");
- var windowsList = this.subviews;
-
- if (0 == windowsList.length) {
- return;
- }
-
- windowsList.sort(this.sortFunction);
-
- var offsetInPx = 40;
- var initX = 20;
- var initY = 20;
- var xPos = initX;
- var yPos = initY;
- var rowHeight = windowsList[0].height;
-
- // arrange windows with new positions
- for (var winIdx = 0; winIdx < windowsList.length; winIdx++) {
- var window = windowsList[winIdx];
- if (canvas.width < xPos + window.width) {
- yPos += rowHeight + offsetInPx;
- xPos = initX;
- rowHeight = window.height;
- }
- if (canvas.height < yPos) {
- initX += 10;
- initY += 10;
- xPos = initX;
- yPos = initY;
- }
- window.setAttribute("x", xPos);
- window.setAttribute("y", yPos);
- window.bringToFront();
-
- xPos += window.width + offsetInPx;
- }
- ]]>
- </method>
-
- <!-- @keyword private -->
- <method name="sortFunction" args="el1, el2">
- <![CDATA[
- if (el1.height > el2.height) {
- return -1;
- } else if (el1.height < el2.height) {
- return 1;
- }
- return 0;
- ]]>
- </method>
-
- <!---
- Initializes video playback component
- and connect to RTMP
- -->
- <method name="connectRecordingPlayer" args="connection_url,x,y,width,height">
- if($debug) Debug.write("connectRecordingPlayer ", connection_url,x,y,width,height);
- canvas.thishib.setAttribute('src',connection_url);
- canvas.thishib.connect();
- this.baseVideoStream = new lz.playBackVideoStream(canvas,{
- x:x,
- y:y,
- width:width,
- height:height
- });
- </method>
-
- <!---
- plays a recorded stream
- -->
- <method name="playRecordingStream" args="streamName,delay,x,y,width,height">
- if($debug) Debug.write("playRecordingStream ",streamName,x,y,width,height);
- if (this.baseVideoStream == null) {
- if ($debug) Debug.warn("baseVideoStream is NULL");
- return;
- }
- this.baseVideoStream.setAttribute("x",x);
- this.baseVideoStream.setAttribute("y",y);
- this.baseVideoStream.setAttribute("width",width);
- this.baseVideoStream.setAttribute("height",height);
- this.baseVideoStream.setAttribute("visibility","visible");
- this.baseVideoStream.playRecordingStream(streamName,delay);
- </method>
-
- <!---
- Updates the width/height property of the recording playback video
- -->
- <method name="updateRecordingVideoPosition" args="width,height">
- if (this.baseVideoStream == null) {
- if ($debug) Debug.warn("baseVideoStream is NULL");
- return;
- }
- this.baseVideoStream.setAttribute("width",width);
- this.baseVideoStream.setAttribute("height",height);
- </method>
-
- <!---
- stops and hides the recording playback video
- -->
- <method name="stopRecordingStream">
- if($debug) Debug.write("stopRecordingStream ");
- if (this.baseVideoStream == null) {
- if ($debug) Debug.warn("baseVideoStream is NULL");
- return;
- }
- if($debug) Debug.write(" stopRecording ");
- this.baseVideoStream.stopRecording();
- this.baseVideoStream.setAttribute("visibility","hidden");
- </method>
-
- <!---
- pauses the current video or continue at the same position
- -->
- <method name="pauseRecordingPlayback" args="pauseBool">
- if($debug) Debug.write("pauseRecordingPlayback ");
- if (this.baseVideoStream == null) {
- if ($debug) Debug.warn("baseVideoStream is NULL");
- return;
- }
- this.baseVideoStream.pause(pauseBool);
- </method>
-
- <method name="seekRecordingPlayback" args="flvTime">
- if($debug) Debug.write("seekRecordingPlayback ",flvTime);
- if (this.baseVideoStream == null) {
- if ($debug) Debug.warn("baseVideoStream is NULL");
- return;
- }
- this.baseVideoStream.seekStream(flvTime);
- </method>
-
- <method name="stopAndCloseRecordingConnection">
- if($debug) Debug.write("stopAndCloseRecordingConnection ");
- if (this.baseVideoStream == null) {
- if ($debug) Debug.warn("baseVideoStream is NULL");
- return;
- }
- this.baseVideoStream.stopRecording();
- this.baseVideoStream.destroy();
- this.baseVideoStream = null;
- </method>
-
- <!---
- #################################
- Methods to handle screen sharing video playback and cursor
- -->
-
- <!---
- Adds a new screen sharing playback video
- -->
- <method name="newScreenSharing" args="value">
- <![CDATA[
- if (value.streamPublishName != canvas.publicSID) {
- if (canvas.screenSharingDialogContainer == null) {
- canvas.screenSharingDialogContainer = new lz.screenSharingDialogContainer(canvas);
- }
- if ($debug) Debug.warn("New Screen Sharing", value);
- new lz.screenSharingDialog(canvas.screenSharingDialogContainer, {initObject: value});
- } else {
- if ($debug) Debug.warn("Self Screen Sharing");
- }
- ]]>
- </method>
-
- <!---
- Add a list of screen sharing playback videos
- (initially when entering the room invoked)
- -->
- <method name="newScreenSharings" args="value">
- <![CDATA[
- for (var eg in value) {
- this.newScreenSharing(value[eg]);
- }
- ]]>
- </method>
-
- <!---
- Close a single screen sharing playback video
- -->
- <method name="closeScreenSharing" args="value">
- <![CDATA[
- if (canvas.screenSharingDialogContainer != null) {
- var obj = canvas.screenSharingDialogContainer.searchForSession(value.streamPublishName);
- if (obj) {
- obj.doClose();
- }
- }
- ]]>
- </method>
-
- <!---
- Closes all screen sharing playback videos, whiteboard videos, user videos
- and closes the rtmp connection
- -->
- <method name="closeAllScreenSharings">
- <![CDATA[
- if ($debug) Debug.write("RECEIVE closeAllScreenSharings ");
- if (canvas.screenSharingDialogContainer != null) {
- canvas.screenSharingDialogContainer.closeAll();
- canvas.screenSharingDialogContainer.destroy();
- canvas.screenSharingDialogContainer = null;
- }
- canvas.commonVideoViewContent.clearAll();
- ]]>
- </method>
-
- <!---
- Update the position of the cursor from the sharing screen
- -->
- <method name="updateCursorScreenSharing" args="value">
- <![CDATA[
- //if ($debug) Debug.write("updateCursorScreenSharing ", value);
- if (canvas.screenSharingDialogContainer != null) {
- var obj = canvas.screenSharingDialogContainer.searchForSession(value.streamPublishName);
- if (obj) {
- obj.updateCursor(value.cursor_x, value.cursor_y);
- }
- }
- ]]>
- </method>
-
- <!---
- Make regExpTest
- -->
- <method name="regExpTest" args="fieldValue,regExStr">
- <![CDATA[
- var re = new RegExp(regExStr);
- var testResult = re.test( fieldValue );
- if ($debug) Debug.write(fieldValue, testResult);
- return testResult;
- ]]>
- </method>
-
- <method name="getMic" args="valMic">
- <![CDATA[
- if ($debug) Debug.write("Entering getMic ...", valMic);
- if (valMic == null) {
- valMic = 0; //select first one by default
- }
- var _micro = canvas.echoPath == 0 ? Microphone.getMicrophone(valMic) : Microphone.getEnhancedMicrophone(valMic);
-
- if (_micro != null) {
- if (canvas.echoPath == 256) {
- var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions();
- options.mode = MicrophoneEnhancedMode.FULL_DUPLEX;
- options.echoPath = 256;
- options.nonLinearProcessing = true;
- _micro.enhancedOptions = options;
- if ($debug) Debug.write("echoPath set to 256");
- if ($debug) Debug.write(_micro.enhancedOptions);
- }
- _micro.codec = SoundCodec.NELLYMOSER;
- _micro.framesPerPacket = 1;
- _micro.setSilenceLevel(0, 2000);
- if ($debug) Debug.write("canvas.microphoneRateBest: ", canvas.microphoneRateBest);
- _micro.rate = (canvas.microphoneRateBest == 'undefined') ? 22 : canvas.microphoneRateBest;
- _micro.gain = 50;
- // this has no effect if enhanced microphone is obtained
- //Microphone setUseEchoSupression(bool)
- var enableEchoSupression = !(canvas.echoSuppression === "false");
- if ($debug) Debug.write("canvas.echoSuppression: ", canvas.echoSuppression);
- _micro.setUseEchoSuppression(enableEchoSupression);
- }
- if ($debug) Debug.write("... getMic DONE", _micro);
- return _micro;
- ]]>
- </method>
-
- <method name="getCam" args="valCam, width, height">
- <![CDATA[
- if ($debug) Debug.write("Entering getCam ...", valCam);
- if (valCam == null) {
- valCam = 0; //select first one by default
- }
- var _camera = Camera.getCamera(valCam);
- if (_camera != null) {
- if ($debug) Debug.write("size: ", width, height);
-
- if ($debug) Debug.write("_camera.setQuality BEST: ", canvas.isInterview, (canvas.bandwidthNeededBest * 2), canvas.camQualityBest);
- if (canvas.isInterview) {
- //we need a fixed frame rate for the videos to merge them later on
- _camera.setMode(320, 260, 24, true); //FIXME TODO hardcoded in different places
- if ($debug) Debug.warn("IS INTERVIEW ");
- _camera.setQuality(0, 98);
- } else {
- if ($debug) Debug.write("_camera.setMode: ", width, height, canvas.framesPerSecond, true);
- _camera.setMode(width, height, canvas.framesPerSecond, true);
- if ($debug) Debug.warn("IS NO INTERVIEW ");
- _camera.setQuality(canvas.bandwidthNeededBest, canvas.camQualityBest);
- }
- }
- if ($debug) Debug.write("... getCam DONE", _camera);
- return _camera;
- ]]>
- </method>
-
- <method name="syncAVsettings" args="g">
- ExternalInterface.call("avSettings", JSON.stringify(g));
- </method>
-
- <method name="storeAVsettings" args="cam, mic, w, h">
- <![CDATA[
- var t:SharedObject = SharedObject.getLocal('userdata');
- var g = t.data;
- if (!g) g = new Array();
- g["cam"] = cam;
- g["mic"] = mic;
- g["width"] = w;
- g["height"] = h;
- t.flush();
- //if ($debug) Debug.write("sharedobject store:: ", g);
- syncAVsettings(g);
- ]]>
- </method>
-
- <method name="loadAVsettings">
- <![CDATA[
- var t:SharedObject = SharedObject.getLocal('userdata');
- var g = t.data;
- //if ($debug) Debug.write("loadAVsettings: ", g["cam"], g["mic"]);
-
- if(g["width"] > 0 && g["height"] > 0) {
- return g;
- }
- return null;
- ]]>
- </method>
-
- <method name="ensureAVsettings" args="w, h">
- if ($debug) Debug.write("ensureAVsettings:: [width, height] : [" + w + ", " + h + "]");
- var g = loadAVsettings();
- if (!g) {
- storeAVsettings(Camera.names.length > 0 ? 0 : -1, Microphone.names.length > 0 ? 0 : -1, w, h);
- } else {
- syncAVsettings(g);
- }
- </method>
-
- <method name="getAvSetting" args="prop, g=null, def=null">
- //Initialize and get eventually stored property
- if (!g) {
- g = canvas.commonVideoViewContent.loadAVsettings();
- }
- var val = g != null ? g[prop] : null;
- return val != null ? val : def;
- </method>
-
- <method name="getAVmode">
- var settings = canvas.currentClient.avsettings;
- return !settings ? 'n' : settings;
- </method>
-
- <method name="_startAvBroadcast" args="restart=false">
- setUserAVSettings.updateBroadcastId = restart;
- setUserAVSettings.doCall();
- </method>
-
- <netRemoteCallHib name="setUserAVSettings" funcname="setUserAVSettings" remotecontext="$once{ canvas.thishib }" >
- <attribute name="updateBroadcastId" value="false" type="boolean" />
- <netparam><method name="getValue">return parent.updateBroadcastId;</method></netparam>
- <handler name="ondata" args="value">
- if ($debug) Debug.write("setUserAVSettings:: done", value);
- if (value > -1) {
- canvas.currentClient.broadCastID = value;
- parent.startAvBroadcast();
- }
- </handler>
- </netRemoteCallHib>
-
- <method name="videoEnabled" args="settings">
- <![CDATA[
- return settings.indexOf('v') > -1;
- ]]>
- </method>
-
- <method name="startAvBroadcast">
- <![CDATA[
- var g = canvas.commonVideoViewContent.loadAVsettings();
- var settings = getAVmode();
- if ($debug) Debug.write("startAvBroadcast::mode ", settings);
- if ('n' != settings) {
- var videoWindow = getVideoObjectByPublicSID(canvas.publicSID);
- if (videoWindow != null && videoEnabled(settings) && videoEnabled(videoWindow.clientVars.avsettings)) {
- // audio on/off with video enabled
- var videoview = videoWindow._chatvideoinner._videostream;
- if (settings == 'av' && videoWindow.clientVars.avsettings == 'v') {
- videoview.muteMicro(false);
- } else if (settings == 'v' && videoWindow.clientVars.avsettings == 'av') {
- videoview.muteMicro(true);
- }
- videoWindow.clientVars = canvas.currentClient;
- } else {
- videoWindow = createVideoObject(canvas.publicSID, true, canvas.currentClient.interviewPodId, canvas.currentClient);
- if ($debug) Debug.write("startAvBroadcast::doninitalize");
-
- var videoview = videoWindow._chatvideoinner._videostream;
- if ($debug) Debug.write("videoWindow: ", videoWindow);
- videoWindow.setAttribute('isremote', false);
- var _micro = getMic(getAvSetting('mic', g, 0));
- var _camera = getCam(getAvSetting('cam', g, 0), canvas.currentClient.VWidth, canvas.currentClient.VHeight);
- if ($debug) Debug.write("startAvBroadcast", _camera, _micro, settings, videoview);
-
- if ($debug) Debug.write("BroadcastId: ", canvas.currentClient.broadCastID);
- switch (settings) {
- case "av":
- videoview.broadcast(canvas.currentClient.broadCastID, _camera, _micro);
- break;
- case "a":
- videoview.broadcast(canvas.currentClient.broadCastID, null, _micro);
- break;
- case "v":
- videoview.broadcast(canvas.currentClient.broadCastID, _camera, _micro);
- videoview.muteMicro(true);
- break;
- default:
- break;
- }
- }
- videoWindow.updateAVSettingsSymbol(canvas.currentClient);
- }
- enableRecordingButton();
- ]]>
- </method>
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="commonVideoViewContentSWF10" extends="view">
+ <switch>
+ <when property="$as3">
+ <passthrough>
+ import flash.external.ExternalInterface;
+ import flash.media.Camera;
+ import flash.media.Microphone;
+ import flash.media.MicrophoneEnhancedMode;
+ import flash.media.MicrophoneEnhancedOptions;
+ import flash.media.SoundCodec;
+ import flash.net.SharedObject;
+ </passthrough>
+ </when>
+ </switch>
+
+ <attribute name="offsetLength" type="number" value="40"/>
+ <attribute name="videoWidth" type="number" value="132"/>
+ <attribute name="videoHeight" type="number" value="132"/>
+ <attribute name="SIDEPANEL_WIDTH" type="number" value="270" />
+ <attribute name="baseVideoStream" value="null" />
+
+ <method name="toggleVideo" args="value">
+ if($debug) Debug.info("toggleVideo ", canvas.currentClient, value);
+ canvas.currentClient.canVideo = value;
+ </method>
+
+ <method name="createEditRecordStream" args="isInterview">
+ if($debug) Debug.info("createEditRecordStream,", isInterview);
+ new lz.editRecordStreamSWF10(canvas, {
+ isInterview: isInterview,
+ });
+ </method>
+
+ <method name="batchCreateVideo" args="clients">
+ <![CDATA[
+ if ($debug) Debug.info("batchCreateVideo: ", clients.length);
+ for (var i = 0; i < clients.length; ++i) {
+ var c = clients[i];
+ if (c.streamid != canvas.streamid) {
+ if (c.isBroadcasting) {
+ createVideo(c);
+ } else {
+ createVideoObject(c.publicSID, false, c.interviewPodId, c);
+ }
+ }
+ }
+ ]]>
+ </method>
+
+ <!--
+ Method that creates the video views when another user enters a room and his
+ item in the list of participants is created.
+ The method to "play" the stream is invoked later, when the user
+ really starts to stream and not only when he just enters the room.
+ -->
+ <method name="createVideoObject" args="publicSID, isBroadcasting, interviewPodId, object">
+ if($debug) Debug.info("createVideoObject, publicSID: ",publicSID, "isBroadcasting: ", isBroadcasting, "object", object);
+ var vidContainer = getVideoObjectByPublicSID(publicSID);
+ if (vidContainer == null) {
+ vidContainer = isBroadcasting ? this.getNewVideoObject(publicSID) : this.getNewVideoObjectByPos(publicSID);
+ vidContainer.publicSID = publicSID;
+ }
+ if ($debug) Debug.write("Is interview ? ", canvas.isInterview);
+ placeInterviewPod(vidContainer, interviewPodId);
+ vidContainer.clientVars = object;
+ vidContainer.setAttribute('visible', false);
+ return vidContainer;
+ </method>
+
+ <method name="placeInterviewPod" args="vidContainer, interviewPodId">
+ <![CDATA[
+ if ($debug) Debug.write("placeInterviewPod::Is interview ", canvas.isInterview, interviewPodId);
+ if (canvas.isInterview && interviewPodId != null && interviewPodId > 0) {
+ if (interviewPodId != null) {
+ vidContainer.setAttribute("interviewPodId", interviewPodId);
+ var cont = canvas._drawarea._videoviewcontent;
+ var box = cont['interviewVideoBox' + interviewPodId];
+ if (!!box) {
+ vidContainer.setAttribute("x", cont.x + box.x);
+ vidContainer.setAttribute("y", box.y);
+ }
+ }
+ vidContainer.setAttribute("width", 322);
+ vidContainer.setAttribute("height", 281);
+ }
+ ]]>
+ </method>
+
+ <method name="setPartnerName" args="obj, first, last=null">
+ if (!obj) {
+ return;
+ }
+ var dispName = !last ? first : first + ' ' + last;
+ obj.setAttribute('chatpartnername', dispName);
+ </method>
+
+ <!--
+ Method that creates the video views when user(self) initially entering a room.
+ Creates the video-view AND starts to stream/play the video
+ -->
+ <method name="createVideo" args="cl">
+ <![CDATA[
+ if ($debug) Debug.info("createVideo::: ", cl.publicSID, cl.broadCastID, cl.avsettings, cl.interviewPodId);
+ if ($debug) Debug.write(" createVideo ALL vars ", cl);
+ var vidContainer = getVideoObjectByPublicSID(cl.publicSID);
+ if (cl.avsettings != 'n') {
+ if (vidContainer == null) {
+ vidContainer = getNewVideoObjectByPos(cl.publicSID);
+ }
+ vidContainer.clientVars = cl;
+ setPartnerName(vidContainer, cl.firstname, cl.lastname);
+ switch (cl.avsettings) {
+ case 'a':
+ if ($debug) Debug.warn("start play");
+ vidContainer._chatvideoinner._videostream.playStream(cl.broadCastID, -1);
+ break;
+ case 'v':
+ case 'av':
+ //this means avsettings is either: "v" or "av"
+ vidContainer._chatvideoinner._videostream.playStream(cl.broadCastID, -1);
+ break;
+ case 'n':
+ default:
+ break;
+ }
+ vidContainer.updateAVSettingsSymbol(cl);
+ if (cl.micMuted) {
+ vidContainer.setMicMuted(cl.micMuted);
+ }
+ if ($debug) Debug.write(" createVideo ALL vars ", vidContainer);
+ placeInterviewPod(vidContainer, cl.interviewPodId);
+ }
+ enableRecordingButton();
+ return vidContainer;
+ ]]>
+ </method>
+
+ <method name="getVideoObjectByPublicSID" args="publicSID">
+ <![CDATA[
+ //if ($debug) Debug.write("getVideoObjectByPublicSid SEARCH: ", publicSID);
+ for (var i = 0; i < this.subviews.length; ++i) {
+ //if ($debug) Debug.write("this.subviews[i].publicSID ", this.subviews[i].publicSID);
+ if (this.subviews[i].publicSID == publicSID) {
+ return this.subviews[i];
+ }
+ }
+ if ($debug) Debug.warn(" - getVideoObjectByPublicSID - DID NOT FIND THE USER BY ", publicSID);
+ return null;
+ ]]>
+ </method>
+
+ <method name="getNewVideoObjectByPos" args="publicSID">
+ <![CDATA[
+ //Get a Free VideoView Slot
+ var freePos = this.getVideoObjectFreePos(this.offsetLength,this.videoWidth,this.videoHeight);
+
+ return new lz.videoObjectPlayBroadcast(this,{
+ publicSID:publicSID,
+ width:videoWidth,
+ height:videoHeight,
+ x:freePos[0],
+ y:freePos[1],
+ isInterview:canvas.isInterview
+ });
+ ]]>
+ </method>
+
+ <method name="getNewVideoObject" args="publicSID">
+ <![CDATA[
+ this.broadCastViewRef = getNewVideoObjectByPos(publicSID);
+ this.broadCastViewRef._chatvideoinner.r.destroy();
+ if ($debug) Debug.write("getNewVideoObject canvas.currentClient ",publicSID, canvas.currentClient);
+ setPartnerName(this.broadCastViewRef, canvas.currentClient.firstname, canvas.currentClient.lastname);
+ return this.broadCastViewRef;
+ ]]>
+ </method>
+
+ <method name="enableRecordingButton">
+ <![CDATA[
+ var count = 0;
+ for (var i = 0; i < this.subviews.length; ++i) {
+ if (this.subviews[i].visible) {
+ count++;
+ }
+ }
+ if (canvas.isInterview) {
+ if (count > 0 && !canvas._drawarea._interview._stop.enabled) {
+ canvas._drawarea._interview._start.setAttribute('enabled', true);
+ } else if (count == 0 && canvas._drawarea._interview._start.enabled) {
+ canvas._drawarea._interview._start.setAttribute('enabled', false);
+ }
+ }
+ ]]>
+ </method>
+
+ <method name="getVideoObjectFreePos" args="offsetLength,videoWidth,videoHeight">
+ <![CDATA[
+ if (canvas.isInterview) {
+ return [0, 0];
+ }
+ var newx = 20;
+ if (canvas.currentRoomObj.hideWhiteboard) {
+ newx += SIDEPANEL_WIDTH;
+ }
+ var newy = 0;
+ var posFound = false;
+ if (offsetLength == undefined) {
+ offsetLength=10;
+ }
+ while (!posFound) {
+ posFound = true;
+ for (var i=0;i<this.subviews.length;i++){
+ var subview = this.subviews[i];
+ var left = subview.x;
+ var right = subview.x + subview.width;
+ var top = subview.y;
+ var bottom = subview.y + subview.height;
+
+ if( !(newx > right
+ || (newx + videoWidth) < left
+ || newy > bottom
+ || (newy + videoHeight) < top ))
+ {
+ newx = right + offsetLength;
+ posFound = false;
+ }
+ if ((newx + videoWidth) >= canvas.width) {
+ newx = 20;
+ if (canvas.currentRoomObj.hideWhiteboard) {
+ newx += SIDEPANEL_WIDTH;
+ }
+ newy += 10;
+ posFound = false;
+ }
+ }
+ }
+
+ if ((newy + videoHeight) >= canvas.height) {
+ newy = 0;
+ }
+ return [newx, newy];
+ ]]>
+ </method>
+
+ <method name="muteSound" args="publicSID, bool">
+ <![CDATA[
+ var obj = this.getVideoObjectByPublicSID(publicSID);
+ if (obj != null) {
+ obj.silenceMicrophone(bool);
+ }
+ return;
+ ]]>
+ </method>
+
+ <method name="resetAllValues">
+ for (var eg in this.subviews){
+ this.subviews[eg].resetValues();
+ }
+ return;
+ </method>
+
+ <method name="closeStreamclient" args="publicSID">
+ <![CDATA[
+ if ($debug) Debug.write("closeStream this: ", publicSID);
+ var obj = this.getVideoObjectByPublicSID(publicSID);
+ if ($debug) Debug.write("closeStream this obj: ", obj);
+ if (obj != null) {
+ obj.resetValues();
+ }
+ if (canvas.publicSID == publicSID && canvas.editRecordStream != null) {
+ canvas.editRecordStream.destroy();
+ }
+ return obj;
+ ]]>
+ </method>
+
+ <method name="removeVideoByUser" args="publicSID"><![CDATA[
+ if ($debug) Debug.write("removeVideoByUser: ", publicSID);
+ var obj = closeStreamclient(publicSID);
+ if (obj == null) {
+ if ($debug) Debug.warn("Could Not find this To removeVideoByUser", publicSID);
+ } else {
+ obj.destroy();
+ enableRecordingButton();
+ }
+ ]]></method>
+
+ <method name="updateMuteStatusVideoView" args="roomClient">
+ <![CDATA[
+ var obj = this.getVideoObjectByPublicSID(roomClient.publicSID);
+ if (obj != null) {
+ obj.muteMicrophone(roomClient);
+ }
+ ]]>
+ </method>
+
+ <method name="setSpeakingByPos" args="publicSID,bool">
+ <![CDATA[
+ //if ($debug) Debug.write("setSpeakingByPos ",publicSID,bool);
+ var obj = this.getVideoObjectByPublicSID(publicSID);
+ if (obj == null) {
+ if ($debug) Debug.warn("Could not find user for setSpeakingByPos ",publicSID,bool);
+ return;
+ }
+ obj._loudness.setSpeaking(bool);
+ ]]>
+ </method>
+
+ <method name="setAVSettingsToClient" args="rcl">
+ <![CDATA[
+ if ($debug) Debug.write("setAVSettingsToClient: ", rcl.publicSID, rcl);
+ var obj = this.getVideoObjectByPublicSID(rcl.publicSID);
+ if ($debug) Debug.write("setAVSettingsToClient: ", obj, rcl.avsettings);
+ if (obj == null) {
+ obj = this.getNewVideoObjectByPos(rcl.publicSID);
+ }
+ obj.thisVars = rcl;
+ obj.updateAVSettingsSymbol(rcl);
+ var v = ("a" == rcl.avsettings && obj.isInterview) || ("a" != rcl.avsettings && rcl.avsettings != "n");
+ obj.setAttribute("visible", "n" != rcl.avsettings);
+ if ($debug) Debug.write("setAVSettingsToClient: ", v, obj.visible);
+ ]]>
+ </method>
+
+ <method name="startStream" args="value">
+ <![CDATA[
+ //value.publicSID,value.broadCastID,value.firstname,value.lastname,value.interviewPodId,value.VWidth,value.VHeight
+
+ if ($debug) Debug.write("startStream: ", value);
+ createVideo(value);
+ ]]>
+ </method>
+
+ <!---
+ Clear all views, probably this is called whenever a user leaves the room for example
+ -->
+ <method name="clearAll">
+ <![CDATA[
+ if ($debug) Debug.write("clearAll", this.subviews);
+ while(this.subviews.length > 0) {
+ if (this.subviews[0]._chatvideoinner != null) {
+ this.subviews[0]._chatvideoinner._videostream._stop();
+ }
+ this.subviews[0].destroy();
+ }
+ if (canvas.editRecordStream != null) {
+ canvas.editRecordStream.destroy();
+ }
+ return;
+ ]]>
+ </method>
+
+ <method name="setExclusiveAudioAllowStatus" args="canGiveAudio">
+ <![CDATA[
+ if ($debug) Debug.write("setExclusiveAudioAllowStatus :: ",canGiveAudio);
+ canvas.setAttribute("isAllowedToGiveExclusiveAudio",canGiveAudio);
+ return;
+ ]]>
+ </method>
+
+ <method name="updateFirstLastName" args="publicSID, first, last">
+ setPartnerName(getVideoObjectByPublicSID(publicSID), first, last);
+ </method>
+
+ <!-- arranges video pods -->
+ <method name="arrangeWindows">
+ <![CDATA[
+ if ($debug) Debug.write("arrangeWindows");
+ var windowsList = this.subviews;
+
+ if (0 == windowsList.length) {
+ return;
+ }
+
+ windowsList.sort(this.sortFunction);
+
+ var offsetInPx = 40;
+ var initX = 20;
+ var initY = 20;
+ var xPos = initX;
+ var yPos = initY;
+ var rowHeight = windowsList[0].height;
+
+ // arrange windows with new positions
+ for (var winIdx = 0; winIdx < windowsList.length; winIdx++) {
+ var window = windowsList[winIdx];
+ if (canvas.width < xPos + window.width) {
+ yPos += rowHeight + offsetInPx;
+ xPos = initX;
+ rowHeight = window.height;
+ }
+ if (canvas.height < yPos) {
+ initX += 10;
+ initY += 10;
+ xPos = initX;
+ yPos = initY;
+ }
+ window.setAttribute("x", xPos);
+ window.setAttribute("y", yPos);
+ window.bringToFront();
+
+ xPos += window.width + offsetInPx;
+ }
+ ]]>
+ </method>
+
+ <!-- @keyword private -->
+ <method name="sortFunction" args="el1, el2">
+ <![CDATA[
+ if (el1.height > el2.height) {
+ return -1;
+ } else if (el1.height < el2.height) {
+ return 1;
+ }
+ return 0;
+ ]]>
+ </method>
+
+ <!---
+ Initializes video playback component
+ and connect to RTMP
+ -->
+ <method name="connectRecordingPlayer" args="connection_url,x,y,width,height">
+ if($debug) Debug.write("connectRecordingPlayer ", connection_url,x,y,width,height);
+ canvas.thishib.setAttribute('src',connection_url);
+ canvas.thishib.connect();
+ this.baseVideoStream = new lz.playBackVideoStream(canvas,{
+ x:x,
+ y:y,
+ width:width,
+ height:height
+ });
+ </method>
+
+ <!---
+ plays a recorded stream
+ -->
+ <method name="playRecordingStream" args="streamName,delay,x,y,width,height">
+ if($debug) Debug.write("playRecordingStream ",streamName,x,y,width,height);
+ if (this.baseVideoStream == null) {
+ if ($debug) Debug.warn("baseVideoStream is NULL");
+ return;
+ }
+ this.baseVideoStream.setAttribute("x",x);
+ this.baseVideoStream.setAttribute("y",y);
+ this.baseVideoStream.setAttribute("width",width);
+ this.baseVideoStream.setAttribute("height",height);
+ this.baseVideoStream.setAttribute("visibility","visible");
+ this.baseVideoStream.playRecordingStream(streamName,delay);
+ </method>
+
+ <!---
+ Updates the width/height property of the recording playback video
+ -->
+ <method name="updateRecordingVideoPosition" args="width,height">
+ if (this.baseVideoStream == null) {
+ if ($debug) Debug.warn("baseVideoStream is NULL");
+ return;
+ }
+ this.baseVideoStream.setAttribute("width",width);
+ this.baseVideoStream.setAttribute("height",height);
+ </method>
+
+ <!---
+ stops and hides the recording playback video
+ -->
+ <method name="stopRecordingStream">
+ if($debug) Debug.write("stopRecordingStream ");
+ if (this.baseVideoStream == null) {
+ if ($debug) Debug.warn("baseVideoStream is NULL");
+ return;
+ }
+ if($debug) Debug.write(" stopRecording ");
+ this.baseVideoStream.stopRecording();
+ this.baseVideoStream.setAttribute("visibility","hidden");
+ </method>
+
+ <!---
+ pauses the current video or continue at the same position
+ -->
+ <method name="pauseRecordingPlayback" args="pauseBool">
+ if($debug) Debug.write("pauseRecordingPlayback ");
+ if (this.baseVideoStream == null) {
+ if ($debug) Debug.warn("baseVideoStream is NULL");
+ return;
+ }
+ this.baseVideoStream.pause(pauseBool);
+ </method>
+
+ <method name="seekRecordingPlayback" args="flvTime">
+ if($debug) Debug.write("seekRecordingPlayback ",flvTime);
+ if (this.baseVideoStream == null) {
+ if ($debug) Debug.warn("baseVideoStream is NULL");
+ return;
+ }
+ this.baseVideoStream.seekStream(flvTime);
+ </method>
+
+ <method name="stopAndCloseRecordingConnection">
+ if($debug) Debug.write("stopAndCloseRecordingConnection ");
+ if (this.baseVideoStream == null) {
+ if ($debug) Debug.warn("baseVideoStream is NULL");
+ return;
+ }
+ this.baseVideoStream.stopRecording();
+ this.baseVideoStream.destroy();
+ this.baseVideoStream = null;
+ </method>
+
+ <!---
+ #################################
+ Methods to handle screen sharing video playback and cursor
+ -->
+
+ <!---
+ Adds a new screen sharing playback video
+ -->
+ <method name="newScreenSharing" args="value">
+ <![CDATA[
+ if (value.streamPublishName != canvas.publicSID) {
+ if (canvas.screenSharingDialogContainer == null) {
+ canvas.screenSharingDialogContainer = new lz.screenSharingDialogContainer(canvas);
+ }
+ if ($debug) Debug.warn("New Screen Sharing", value);
+ new lz.screenSharingDialog(canvas.screenSharingDialogContainer, {initObject: value});
+ } else {
+ if ($debug) Debug.warn("Self Screen Sharing");
+ }
+ ]]>
+ </method>
+
+ <!---
+ Add a list of screen sharing playback videos
+ (initially when entering the room invoked)
+ -->
+ <method name="newScreenSharings" args="value">
+ <![CDATA[
+ for (var eg in value) {
+ this.newScreenSharing(value[eg]);
+ }
+ ]]>
+ </method>
+
+ <!---
+ Close a single screen sharing playback video
+ -->
+ <method name="closeScreenSharing" args="value">
+ <![CDATA[
+ if (canvas.screenSharingDialogContainer != null) {
+ var obj = canvas.screenSharingDialogContainer.searchForSession(value.streamPublishName);
+ if (obj) {
+ obj.doClose();
+ }
+ }
+ ]]>
+ </method>
+
+ <!---
+ Closes all screen sharing playback videos, whiteboard videos, user videos
+ and closes the rtmp connection
+ -->
+ <method name="closeAllScreenSharings">
+ <![CDATA[
+ if ($debug) Debug.write("RECEIVE closeAllScreenSharings ");
+ if (canvas.screenSharingDialogContainer != null) {
+ canvas.screenSharingDialogContainer.closeAll();
+ canvas.screenSharingDialogContainer.destroy();
+ canvas.screenSharingDialogContainer = null;
+ }
+ canvas.commonVideoViewContent.clearAll();
+ ]]>
+ </method>
+
+ <!---
+ Update the position of the cursor from the sharing screen
+ -->
+ <method name="updateCursorScreenSharing" args="value">
+ <![CDATA[
+ //if ($debug) Debug.write("updateCursorScreenSharing ", value);
+ if (canvas.screenSharingDialogContainer != null) {
+ var obj = canvas.screenSharingDialogContainer.searchForSession(value.streamPublishName);
+ if (obj) {
+ obj.updateCursor(value.cursor_x, value.cursor_y);
+ }
+ }
+ ]]>
+ </method>
+
+ <!---
+ Make regExpTest
+ -->
+ <method name="regExpTest" args="fieldValue,regExStr">
+ <![CDATA[
+ var re = new RegExp(regExStr);
+ var testResult = re.test( fieldValue );
+ if ($debug) Debug.write(fieldValue, testResult);
+ return testResult;
+ ]]>
+ </method>
+
+ <method name="getMic" args="valMic">
+ <![CDATA[
+ if ($debug) Debug.write("Entering getMic ...", valMic);
+ if (valMic == null) {
+ valMic = 0; //select first one by default
+ }
+ var _micro = canvas.echoPath == 0 ? Microphone.getMicrophone(valMic) : Microphone.getEnhancedMicrophone(valMic);
+
+ if (_micro != null) {
+ if (canvas.echoPath == 256) {
+ var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions();
+ options.mode = MicrophoneEnhancedMode.FULL_DUPLEX;
+ options.echoPath = 256;
+ options.nonLinearProcessing = true;
+ _micro.enhancedOptions = options;
+ if ($debug) Debug.write("echoPath set to 256");
+ if ($debug) Debug.write(_micro.enhancedOptions);
+ }
+ _micro.codec = SoundCodec.NELLYMOSER;
+ _micro.framesPerPacket = 1;
+ _micro.setSilenceLevel(0, 2000);
+ if ($debug) Debug.write("canvas.microphoneRateBest: ", canvas.microphoneRateBest);
+ _micro.rate = (canvas.microphoneRateBest == 'undefined') ? 22 : canvas.microphoneRateBest;
+ _micro.gain = 50;
+ // this has no effect if enhanced microphone is obtained
+ //Microphone setUseEchoSupression(bool)
+ var enableEchoSupression = !(canvas.echoSuppression === "false");
+ if ($debug) Debug.write("canvas.echoSuppression: ", canvas.echoSuppression);
+ _micro.setUseEchoSuppression(enableEchoSupression);
+ }
+ if ($debug) Debug.write("... getMic DONE", _micro);
+ return _micro;
+ ]]>
+ </method>
+
+ <method name="getCam" args="valCam, width, height">
+ <![CDATA[
+ if ($debug) Debug.write("Entering getCam ...", valCam);
+ if (valCam == null) {
+ valCam = 0; //select first one by default
+ }
+ var _camera = Camera.getCamera(valCam);
+ if (_camera != null) {
+ if ($debug) Debug.write("size: ", width, height);
+
+ if ($debug) Debug.write("_camera.setQuality BEST: ", canvas.isInterview, (canvas.bandwidthNeededBest * 2), canvas.camQualityBest);
+ if (canvas.isInterview) {
+ //we need a fixed frame rate for the videos to merge them later on
+ _camera.setMode(320, 260, 24, true); //FIXME TODO hardcoded in different places
+ if ($debug) Debug.warn("IS INTERVIEW ");
+ _camera.setQuality(0, 98);
+ } else {
+ if ($debug) Debug.write("_camera.setMode: ", width, height, canvas.framesPerSecond, true);
+ _camera.setMode(width, height, canvas.framesPerSecond, true);
+ if ($debug) Debug.warn("IS NO INTERVIEW ");
+ _camera.setQuality(canvas.bandwidthNeededBest, canvas.camQualityBest);
+ }
+ }
+ if ($debug) Debug.write("... getCam DONE", _camera);
+ return _camera;
+ ]]>
+ </method>
+
+ <method name="syncAVsettings" args="g">
+ ExternalInterface.call("avSettings", JSON.stringify(g));
+ </method>
+
+ <method name="storeAVsettings" args="cam, mic, w, h">
+ <![CDATA[
+ var t:SharedObject = SharedObject.getLocal('userdata');
+ var g = t.data;
+ if (!g) g = new Array();
+ g["cam"] = cam;
+ g["mic"] = mic;
+ g["width"] = w;
+ g["height"] = h;
+ t.flush();
+ //if ($debug) Debug.write("sharedobject store:: ", g);
+ syncAVsettings(g);
+ ]]>
+ </method>
+
+ <method name="loadAVsettings">
+ <![CDATA[
+ var t:SharedObject = SharedObject.getLocal('userdata');
+ var g = t.data;
+ //if ($debug) Debug.write("loadAVsettings: ", g["cam"], g["mic"]);
+
+ if(g["width"] > 0 && g["height"] > 0) {
+ return g;
+ }
+ return null;
+ ]]>
+ </method>
+
+ <method name="ensureAVsettings" args="w, h">
+ if ($debug) Debug.write("ensureAVsettings:: [width, height] : [" + w + ", " + h + "]");
+ var g = loadAVsettings();
+ if (!g) {
+ storeAVsettings(Camera.names.length > 0 ? 0 : -1, Microphone.names.length > 0 ? 0 : -1, w, h);
+ } else {
+ syncAVsettings(g);
+ }
+ </method>
+
+ <method name="getAvSetting" args="prop, g=null, def=null">
+ //Initialize and get eventually stored property
+ if (!g) {
+ g = canvas.commonVideoViewContent.loadAVsettings();
+ }
+ var val = g != null ? g[prop] : null;
+ return val != null ? val : def;
+ </method>
+
+ <method name="getAVmode">
+ var settings = canvas.currentClient.avsettings;
+ return !settings ? 'n' : settings;
+ </method>
+
+ <method name="_startAvBroadcast" args="restart=false">
+ setUserAVSettings.updateBroadcastId = restart;
+ setUserAVSettings.doCall();
+ </method>
+
+ <netRemoteCallHib name="setUserAVSettings" funcname="setUserAVSettings" remotecontext="$once{ canvas.thishib }" >
+ <attribute name="updateBroadcastId" value="false" type="boolean" />
+ <netparam><method name="getValue">return parent.updateBroadcastId;</method></netparam>
+ <handler name="ondata" args="value">
+ if ($debug) Debug.write("setUserAVSettings:: done", value);
+ if (value > -1) {
+ canvas.currentClient.broadCastID = value;
+ parent.startAvBroadcast();
+ }
+ </handler>
+ </netRemoteCallHib>
+
+ <method name="videoEnabled" args="settings">
+ <![CDATA[
+ return settings.indexOf('v') > -1;
+ ]]>
+ </method>
+
+ <method name="startAvBroadcast">
+ <![CDATA[
+ var g = canvas.commonVideoViewContent.loadAVsettings();
+ var settings = getAVmode();
+ if ($debug) Debug.write("startAvBroadcast::mode ", settings);
+ if ('n' != settings) {
+ var videoWindow = getVideoObjectByPublicSID(canvas.publicSID);
+ if (videoWindow != null && videoEnabled(settings) && videoEnabled(videoWindow.clientVars.avsettings)) {
+ // audio on/off with video enabled
+ var videoview = videoWindow._chatvideoinner._videostream;
+ if (settings == 'av' && videoWindow.clientVars.avsettings == 'v') {
+ videoview.muteMicro(false);
+ } else if (settings == 'v' && videoWindow.clientVars.avsettings == 'av') {
+ videoview.muteMicro(true);
+ }
+ videoWindow.clientVars = canvas.currentClient;
+ } else {
+ videoWindow = createVideoObject(canvas.publicSID, true, canvas.currentClient.interviewPodId, canvas.currentClient);
+ if ($debug) Debug.write("startAvBroadcast::doninitalize");
+
+ var videoview = videoWindow._chatvideoinner._videostream;
+ if ($debug) Debug.write("videoWindow: ", videoWindow);
+ videoWindow.setAttribute('isremote', false);
+ var _micro = getMic(getAvSetting('mic', g, 0));
+ var _camera = getCam(getAvSetting('cam', g, 0), canvas.currentClient.VWidth, canvas.currentClient.VHeight);
+ if ($debug) Debug.write("startAvBroadcast", _camera, _micro, settings, videoview);
+
+ if ($debug) Debug.write("BroadcastId: ", canvas.currentClient.broadCastID);
+ switch (settings) {
+ case "av":
+ videoview.broadcast(canvas.currentClient.broadCastID, _camera, _micro);
+ break;
+ case "a":
+ videoview.broadcast(canvas.currentClient.broadCastID, null, _micro);
+ break;
+ case "v":
+ videoview.broadcast(canvas.currentClient.broadCastID, _camera, _micro);
+ videoview.muteMicro(true);
+ break;
+ default:
+ break;
+ }
+ }
+ videoWindow.updateAVSettingsSymbol(canvas.currentClient);
+ }
+ enableRecordingButton();
+ ]]>
+ </method>
+</class>
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/dragHelper.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/dragHelper.lzx b/openmeetings-flash/src/main/swf/dragHelper.lzx
index 0d64aff..a879103 100644
--- a/openmeetings-flash/src/main/swf/dragHelper.lzx
+++ b/openmeetings-flash/src/main/swf/dragHelper.lzx
@@ -1,42 +1,42 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<class name="dragHelper">
-
- <attribute name="dragHelper" value="null" />
-
- <method name="create">
- if(this.dragHelper != null ) this.dragHelper.destroy();
- this.dragHelper = new lz.view(canvas, {width:canvas.width,height:canvas.height,x:'0',y:'0', bgcolor:'0xFFFFFF', opacity:0.01,clickable:true});
- this.dragHelper.sendInFrontOf(canvas.mainComponent);
- </method>
-
- <method name="remove">
- if (this.dragHelper) {
- this.dragHelper.destroy();
- this.dragHelper = null;
- }
- </method>
-
-</class>
-
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<class name="dragHelper">
+
+ <attribute name="dragHelper" value="null" />
+
+ <method name="create">
+ if(this.dragHelper != null ) this.dragHelper.destroy();
+ this.dragHelper = new lz.view(canvas, {width:canvas.width,height:canvas.height,x:'0',y:'0', bgcolor:'0xFFFFFF', opacity:0.01,clickable:true});
+ this.dragHelper.sendInFrontOf(canvas.mainComponent);
+ </method>
+
+ <method name="remove">
+ if (this.dragHelper) {
+ this.dragHelper.destroy();
+ this.dragHelper = null;
+ }
+ </method>
+
+</class>
+
</library>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/lzrecorder/library.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/lzrecorder/library.lzx b/openmeetings-flash/src/main/swf/lzrecorder/library.lzx
index 6f84e4c..ecffb6c 100644
--- a/openmeetings-flash/src/main/swf/lzrecorder/library.lzx
+++ b/openmeetings-flash/src/main/swf/lzrecorder/library.lzx
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
- <include href="playBackVideoStream.lzx" />
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+ <include href="playBackVideoStream.lzx" />
+
+</library>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/lzrecorder/playBackVideoStream.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/lzrecorder/playBackVideoStream.lzx b/openmeetings-flash/src/main/swf/lzrecorder/playBackVideoStream.lzx
index b7fdfd5..5d7c731 100644
--- a/openmeetings-flash/src/main/swf/lzrecorder/playBackVideoStream.lzx
+++ b/openmeetings-flash/src/main/swf/lzrecorder/playBackVideoStream.lzx
@@ -1,71 +1,71 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
-<!---
- The playBackVideoStream is used in the recording playerback to show the video
- -->
-<class name="playBackVideoStream" extends="baseVideoStream" bgcolor="0x000000" visibility="hidden">
-
- <attribute name="timerDelegate" value="null"/>
- <attribute name="timerDelegateStarted" value="false" type="boolean"/>
-
- <handler name="oninit">
- this.timerDelegate = new LzDelegate( this, "calcProgressBar" );
- </handler>
-
- <handler name="onclick">
- canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'togglePlayRecordingStream');
- </handler>
-
- <method name="playRecordingStream" args="streamName,delay">
- this.playStream(streamName,delay);
- this.timerDelegateStarted = true;
- lz.Timer.addTimer( this.timerDelegate , 1000 );
- </method>
-
- <method name="stopRecording">
- this._stop();
- lz.Timer.removeTimer(this.timerDelegate);
- this.timerDelegateStarted = false;
- </method>
-
- <handler name="onNetStatus" args="info">
- if ($debug) Debug.write("onNetStatus ",info);
- if (info.code == "NetStream.Play.Stop" ) {
- canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'stopRecordingStream');
- }
- </handler>
- <handler name="onMetaDataEvent" args="info">
- if ($debug) Debug.write("onMetaData ",info);
- </handler>
-
- <method name="calcProgressBar" args="tObjRef">
- if ($debug) Debug.write("calcProgressBar updateRecordingStreamTime",this._ns.time)
- canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'updateRecordingStreamTime',this._ns.time);
- if (this.timerDelegateStarted) {
- lz.Timer.addTimer( this.timerDelegate , 1000 );
- }
- </method>
-
-</class>
-
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+<!---
+ The playBackVideoStream is used in the recording playerback to show the video
+ -->
+<class name="playBackVideoStream" extends="baseVideoStream" bgcolor="0x000000" visibility="hidden">
+
+ <attribute name="timerDelegate" value="null"/>
+ <attribute name="timerDelegateStarted" value="false" type="boolean"/>
+
+ <handler name="oninit">
+ this.timerDelegate = new LzDelegate( this, "calcProgressBar" );
+ </handler>
+
+ <handler name="onclick">
+ canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'togglePlayRecordingStream');
+ </handler>
+
+ <method name="playRecordingStream" args="streamName,delay">
+ this.playStream(streamName,delay);
+ this.timerDelegateStarted = true;
+ lz.Timer.addTimer( this.timerDelegate , 1000 );
+ </method>
+
+ <method name="stopRecording">
+ this._stop();
+ lz.Timer.removeTimer(this.timerDelegate);
+ this.timerDelegateStarted = false;
+ </method>
+
+ <handler name="onNetStatus" args="info">
+ if ($debug) Debug.write("onNetStatus ",info);
+ if (info.code == "NetStream.Play.Stop" ) {
+ canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'stopRecordingStream');
+ }
+ </handler>
+ <handler name="onMetaDataEvent" args="info">
+ if ($debug) Debug.write("onMetaData ",info);
+ </handler>
+
+ <method name="calcProgressBar" args="tObjRef">
+ if ($debug) Debug.write("calcProgressBar updateRecordingStreamTime",this._ns.time)
+ canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'updateRecordingStreamTime',this._ns.time);
+ if (this.timerDelegateStarted) {
+ lz.Timer.addTimer( this.timerDelegate , 1000 );
+ }
+ </method>
+
+</class>
+
</library>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteBoardPointer.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteBoardPointer.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteBoardPointer.lzx
index c95beab..b6f8674 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteBoardPointer.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteBoardPointer.lzx
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
-
- <class name="whiteBoardPointer" extends="view"
- resource="pointer_whiteboard_rsc" width="20" height="20" >
- <attribute name="userName" value="" type="string" />
- <attribute name="fadeDelegate" value="null" />
- <labelText x="20" text="$once{ parent.userName }" />
- <handler name="oninit">
- this.play();
- this.fadeDelegate = new LzDelegate( this, "fadeText" );
- lz.Timer.addTimer( this.fadeDelegate, 5000 );
- </handler>
- <method name="fadeText" args="itemObj">
- this.destroy();
- </method>
- </class>
-
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+
+ <class name="whiteBoardPointer" extends="view"
+ resource="pointer_whiteboard_rsc" width="20" height="20" >
+ <attribute name="userName" value="" type="string" />
+ <attribute name="fadeDelegate" value="null" />
+ <labelText x="20" text="$once{ parent.userName }" />
+ <handler name="oninit">
+ this.play();
+ this.fadeDelegate = new LzDelegate( this, "fadeText" );
+ lz.Timer.addTimer( this.fadeDelegate, 5000 );
+ </handler>
+ <method name="fadeText" args="itemObj">
+ this.destroy();
+ </method>
+ </class>
+
</library>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
index b18f9f5..817b0f6 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<library>
- <class name="drawDocumentPanelItem" extends="blueButton" width="26" height="26"
- x_insetResource="2" y_insetResource="2" width_insetResource="22" height_insetResource="22">
- <attribute name="modi" value="" type="string" />
- <attribute name="labelid" value="0" type="number" />
-
- <handler name="onclick">
- var docToolbar = canvas._drawarea.getDocumentToolBar();
- //if ($debug) Debug.write("docToolbar.parent.parent: ", docToolbar.parent.parent);
- if (docToolbar.parent.parent.ignoreUpdates) {
- return;
- }
- canvas._drawarea.setCurrentDocumentByToolBar(parent.parent.currentDocument.getValue());
- canvas._drawarea.doDocumentAction(this.modi);
- </handler>
-
- <labelTooltip name="__labeltooltip" labelid="$once{ parent.labelid }" />
- </class>
-</library>
-
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<library>
+ <class name="drawDocumentPanelItem" extends="blueButton" width="26" height="26"
+ x_insetResource="2" y_insetResource="2" width_insetResource="22" height_insetResource="22">
+ <attribute name="modi" value="" type="string" />
+ <attribute name="labelid" value="0" type="number" />
+
+ <handler name="onclick">
+ var docToolbar = canvas._drawarea.getDocumentToolBar();
+ //if ($debug) Debug.write("docToolbar.parent.parent: ", docToolbar.parent.parent);
+ if (docToolbar.parent.parent.ignoreUpdates) {
+ return;
+ }
+ canvas._drawarea.setCurrentDocumentByToolBar(parent.parent.currentDocument.getValue());
+ canvas._drawarea.doDocumentAction(this.modi);
+ </handler>
+
+ <labelTooltip name="__labeltooltip" labelid="$once{ parent.labelid }" />
+ </class>
+</library>
+
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/networkTesting/networktesting.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/networkTesting/networktesting.lzx b/openmeetings-flash/src/main/swf/networkTesting/networktesting.lzx
index af774bc..595b24f 100644
--- a/openmeetings-flash/src/main/swf/networkTesting/networktesting.lzx
+++ b/openmeetings-flash/src/main/swf/networkTesting/networktesting.lzx
@@ -1,147 +1,147 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<canvas width="100%" height="100%" title="NetworkTesting">
-
- <switch>
- <when property="$as3">
- <passthrough>
- import flash.external.ExternalInterface;
- </passthrough>
- </when>
- </switch>
- <switch>
- <when property="$debug">
- <method name="doDebugInit">
- canvas.setAttribute('debug', true);
- </method>
- <debug fontsize="11" oninit="Debug.showInternalProperties = true" width="40%" y="50%" x="60%" height="50%" />
- </when>
- <otherwise>
- <method name="doDebugInit">
- </method>
- </otherwise>
- </switch>
-
- <include href="testsView.lzx" />
- <include href="../base/remote/restCall.lzx" />
-
- <handler name="oninit"><![CDATA[
- flash.external.ExternalInterface.call("loadingComplete");
- var lbls = ExternalInterface.call("getStringLabels");
- canvas.lbls = new Array(lbls.length);
- for (var i = 0; i < lbls.length; ++i) {
- canvas.lbls[lbls[i].id] = lbls[i].value;
- }
- doDebugInit();
- ]]></handler>
-
- <method name="lbl" args="key">
- var s = canvas.lbls['network.test.' + key];
- if ($debug) Debug.info("LBL ", key, s, canvas.lbls);
- return !!s ? s : "Missing[" + key + "]";
- </method>
-
- <!--
- These attributes are rewritten by values from "public/config.xml"
- -->
- <attribute name="rtmpProtocol" type="string" value="rtmp" />
- <attribute name="rtmpHost" type="string" value="" />
- <attribute name="rtmpPort" type="number" value="1935" />
-
- <attribute name="httpProtocol" type="string" value="http" />
- <attribute name="httpHost" type="string" value="" />
- <attribute name="httpPort" type="number" value="5080" />
- <attribute name="uriContext" type="string" value="/openmeetings" />
- <attribute name="rtmpUriPath" type="string" value="/openmeetings/hibernate" />
-
- <method name="getBrowserHost">
- var host:String = ExternalInterface.call("window.location.host.toString()");
- // in case of IE or some other security issues we will fail ...
- if (!host) {
- var url:String = canvas.proxyurl;
- if (url) {
- if ($debug) Debug.write("url ", url);
- var paramsIdx = url.indexOf("?");
- if (paramsIdx != -1) {
- url = url.substr(0, paramsIdx);
- }
- if ($debug) Debug.write("url ", url);
- url = url.substr(url.indexOf("//") + 2);
- var portIdx = url.indexOf(":");
- host = url.substr(0, portIdx != -1 ? portIdx : url.indexOf("/"));
- if ($debug) Debug.write("host ", host);
- }
- }
- return host;
- </method>
-
- <method name="getSettings">
- var settingsPtr = canvas.settings.getPointer();
-
- var useSSL:Boolean = ("yes" == settingsPtr.xpathQuery("config/useSSL/text()"));
- canvas.setAttribute("rtmpProtocol", useSSL ? "rtmps" : "rtmp");
- canvas.setAttribute("proxyType", settingsPtr.xpathQuery("config/proxyType/text()"));
- canvas.setAttribute("rtmpHost", settingsPtr.xpathQuery("config/rtmphostlocal/text()"));
- if (!canvas.rtmpHost) {
- canvas.rtmpHost = getBrowserHost();
- }
- canvas.setAttribute("rtmpPort", settingsPtr.xpathQuery("config/" + (useSSL ? "rtmpsslport" : "rtmpport") + "/text()"));
-
- canvas.setAttribute("httpProtocol", settingsPtr.xpathQuery("config/protocol/text()"));
- canvas.setAttribute("httpHost", settingsPtr.xpathQuery("config/httphostlocal/text()"));
- if (!canvas.httpHost) {
- canvas.httpHost = rtmpHost;
- }
- canvas.setAttribute("httpPort", settingsPtr.xpathQuery("config/red5httpport/text()"));
-
- canvas.setAttribute("uriContext", settingsPtr.xpathQuery("config/httpRootKey/text()"));
- canvas.setAttribute("rtmpUriPath", canvas.uriContext + "hibernate");
- </method>
-
- <method name="showTests">
- var tests = new lz.TestsView(canvas, {name:"testsView"});
- tests.testAll();
- </method>
-
- <dataset type="http" name="settings" request="false" proxied="false">
- <handler name="oninit">
- this.setAttribute("src", "config.xml");
- this.doRequest();
- </handler>
- <handler name="ondata">
- if ($debug) Debug.write("Settings are retrieved");
- canvas.getSettings();
- canvas.showTests();
- </handler>
- <handler name="onerror" args="e">
- if ($debug) Debug.write("Settings error [" + this.src + "]", e);
- </handler>
- <handler name="ontimeout" args="e">
- if ($debug) Debug.write("Settings timeout error", e);
- </handler>
- </dataset>
-
- <attribute name="busy" type="boolean" value="false"/>
- <attribute name="log" type="string" value="" />
-
- <attribute name="testsView" value="null"/>
-
-</canvas>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<canvas width="100%" height="100%" title="NetworkTesting">
+
+ <switch>
+ <when property="$as3">
+ <passthrough>
+ import flash.external.ExternalInterface;
+ </passthrough>
+ </when>
+ </switch>
+ <switch>
+ <when property="$debug">
+ <method name="doDebugInit">
+ canvas.setAttribute('debug', true);
+ </method>
+ <debug fontsize="11" oninit="Debug.showInternalProperties = true" width="40%" y="50%" x="60%" height="50%" />
+ </when>
+ <otherwise>
+ <method name="doDebugInit">
+ </method>
+ </otherwise>
+ </switch>
+
+ <include href="testsView.lzx" />
+ <include href="../base/remote/restCall.lzx" />
+
+ <handler name="oninit"><![CDATA[
+ flash.external.ExternalInterface.call("loadingComplete");
+ var lbls = ExternalInterface.call("getStringLabels");
+ canvas.lbls = new Array(lbls.length);
+ for (var i = 0; i < lbls.length; ++i) {
+ canvas.lbls[lbls[i].id] = lbls[i].value;
+ }
+ doDebugInit();
+ ]]></handler>
+
+ <method name="lbl" args="key">
+ var s = canvas.lbls['network.test.' + key];
+ if ($debug) Debug.info("LBL ", key, s, canvas.lbls);
+ return !!s ? s : "Missing[" + key + "]";
+ </method>
+
+ <!--
+ These attributes are rewritten by values from "public/config.xml"
+ -->
+ <attribute name="rtmpProtocol" type="string" value="rtmp" />
+ <attribute name="rtmpHost" type="string" value="" />
+ <attribute name="rtmpPort" type="number" value="1935" />
+
+ <attribute name="httpProtocol" type="string" value="http" />
+ <attribute name="httpHost" type="string" value="" />
+ <attribute name="httpPort" type="number" value="5080" />
+ <attribute name="uriContext" type="string" value="/openmeetings" />
+ <attribute name="rtmpUriPath" type="string" value="/openmeetings/hibernate" />
+
+ <method name="getBrowserHost">
+ var host:String = ExternalInterface.call("window.location.host.toString()");
+ // in case of IE or some other security issues we will fail ...
+ if (!host) {
+ var url:String = canvas.proxyurl;
+ if (url) {
+ if ($debug) Debug.write("url ", url);
+ var paramsIdx = url.indexOf("?");
+ if (paramsIdx != -1) {
+ url = url.substr(0, paramsIdx);
+ }
+ if ($debug) Debug.write("url ", url);
+ url = url.substr(url.indexOf("//") + 2);
+ var portIdx = url.indexOf(":");
+ host = url.substr(0, portIdx != -1 ? portIdx : url.indexOf("/"));
+ if ($debug) Debug.write("host ", host);
+ }
+ }
+ return host;
+ </method>
+
+ <method name="getSettings">
+ var settingsPtr = canvas.settings.getPointer();
+
+ var useSSL:Boolean = ("yes" == settingsPtr.xpathQuery("config/useSSL/text()"));
+ canvas.setAttribute("rtmpProtocol", useSSL ? "rtmps" : "rtmp");
+ canvas.setAttribute("proxyType", settingsPtr.xpathQuery("config/proxyType/text()"));
+ canvas.setAttribute("rtmpHost", settingsPtr.xpathQuery("config/rtmphostlocal/text()"));
+ if (!canvas.rtmpHost) {
+ canvas.rtmpHost = getBrowserHost();
+ }
+ canvas.setAttribute("rtmpPort", settingsPtr.xpathQuery("config/" + (useSSL ? "rtmpsslport" : "rtmpport") + "/text()"));
+
+ canvas.setAttribute("httpProtocol", settingsPtr.xpathQuery("config/protocol/text()"));
+ canvas.setAttribute("httpHost", settingsPtr.xpathQuery("config/httphostlocal/text()"));
+ if (!canvas.httpHost) {
+ canvas.httpHost = rtmpHost;
+ }
+ canvas.setAttribute("httpPort", settingsPtr.xpathQuery("config/red5httpport/text()"));
+
+ canvas.setAttribute("uriContext", settingsPtr.xpathQuery("config/httpRootKey/text()"));
+ canvas.setAttribute("rtmpUriPath", canvas.uriContext + "hibernate");
+ </method>
+
+ <method name="showTests">
+ var tests = new lz.TestsView(canvas, {name:"testsView"});
+ tests.testAll();
+ </method>
+
+ <dataset type="http" name="settings" request="false" proxied="false">
+ <handler name="oninit">
+ this.setAttribute("src", "config.xml");
+ this.doRequest();
+ </handler>
+ <handler name="ondata">
+ if ($debug) Debug.write("Settings are retrieved");
+ canvas.getSettings();
+ canvas.showTests();
+ </handler>
+ <handler name="onerror" args="e">
+ if ($debug) Debug.write("Settings error [" + this.src + "]", e);
+ </handler>
+ <handler name="ontimeout" args="e">
+ if ($debug) Debug.write("Settings timeout error", e);
+ </handler>
+ </dataset>
+
+ <attribute name="busy" type="boolean" value="false"/>
+ <attribute name="log" type="string" value="" />
+
+ <attribute name="testsView" value="null"/>
+
+</canvas>
[05/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
index d15eed3..8f81e1a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
@@ -1,49 +1,49 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.AbstractWidget;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.WidgetLocation;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class MyRoomsWidget extends AbstractWidget {
- private static final long serialVersionUID = 1L;
- public static final String WIDGET_ID_MY_ROOMS = "MyRoomsWidget";
-
- public MyRoomsWidget() {
- super();
- location = new WidgetLocation(0, 1);
- init();
- }
-
- @Override
- public void init() {
- super.init();
- title = Application.getString(781L);
- id = WIDGET_ID_MY_ROOMS;
- }
-
- @Override
- public WidgetView createView(String viewId) {
- return new MyRoomsWidgetView(viewId, new Model<Widget>(this));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.AbstractWidget;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.WidgetLocation;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class MyRoomsWidget extends AbstractWidget {
+ private static final long serialVersionUID = 1L;
+ public static final String WIDGET_ID_MY_ROOMS = "MyRoomsWidget";
+
+ public MyRoomsWidget() {
+ super();
+ location = new WidgetLocation(0, 1);
+ init();
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ title = Application.getString(781L);
+ id = WIDGET_ID_MY_ROOMS;
+ }
+
+ @Override
+ public WidgetView createView(String viewId) {
+ return new MyRoomsWidgetView(viewId, new Model<Widget>(this));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
index 5b65f5f..64a1a84 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
@@ -1,51 +1,51 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.wicketstuff.dashboard.WidgetDescriptor;
-
-public class MyRoomsWidgetDescriptor implements WidgetDescriptor {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getName() {
- return Application.getString(781L);
- }
-
- @Override
- public String getProvider() {
- return "Apache Openmeetings";
- }
-
- @Override
- public String getDescription() {
- return Application.getString(782L);
- }
-
- @Override
- public String getWidgetClassName() {
- return MyRoomsWidget.class.getName();
- }
-
- @Override
- public String getTypeName() {
- return "om.widget.myrooms";
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.wicketstuff.dashboard.WidgetDescriptor;
+
+public class MyRoomsWidgetDescriptor implements WidgetDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getName() {
+ return Application.getString(781L);
+ }
+
+ @Override
+ public String getProvider() {
+ return "Apache Openmeetings";
+ }
+
+ @Override
+ public String getDescription() {
+ return Application.getString(782L);
+ }
+
+ @Override
+ public String getWidgetClassName() {
+ return MyRoomsWidget.class.getName();
+ }
+
+ @Override
+ public String getTypeName() {
+ return "om.widget.myrooms";
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html
index c37eccc..87cfeae 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div wicket:id="rooms"></div>
- </wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div wicket:id="rooms"></div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
index fee5901..6a9602a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
@@ -1,36 +1,36 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import static org.apache.openmeetings.web.common.UserPanel.getMyRooms;
-
-import org.apache.openmeetings.web.user.rooms.RoomsPanel;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class MyRoomsWidgetView extends WidgetView {
- private static final long serialVersionUID = 1L;
-
- public MyRoomsWidgetView(String id, Model<Widget> model) {
- super(id, model);
-
- add(new RoomsPanel("rooms", getMyRooms()));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import static org.apache.openmeetings.web.common.UserPanel.getMyRooms;
+
+import org.apache.openmeetings.web.user.rooms.RoomsPanel;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class MyRoomsWidgetView extends WidgetView {
+ private static final long serialVersionUID = 1L;
+
+ public MyRoomsWidgetView(String id, Model<Widget> model) {
+ super(id, model);
+
+ add(new RoomsPanel("rooms", getMyRooms()));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.html
index 20926c3..c6151d9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.html
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div wicket:id="dashboard" class="dashboard"></div>
- </wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div wicket:id="dashboard" class="dashboard"></div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java
index 772476f..c1e291e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java
@@ -1,36 +1,36 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.db.util.FormatHelper;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.web.DashboardPanel;
-
-public class OmDashboardPanel extends UserPanel {
- private static final long serialVersionUID = 1L;
-
- public OmDashboardPanel(String id) {
- super(id);
-
- boolean isRtl = FormatHelper.isRtlLanguage(WebSession.get().getLocale().toLanguageTag());
- add(new DashboardPanel("dashboard", Model.of(WebSession.getDashboard())).setRtlModel(Model.of(isRtl)));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.db.util.FormatHelper;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.web.DashboardPanel;
+
+public class OmDashboardPanel extends UserPanel {
+ private static final long serialVersionUID = 1L;
+
+ public OmDashboardPanel(String id) {
+ super(id);
+
+ boolean isRtl = FormatHelper.isRtlLanguage(WebSession.get().getLocale().toLanguageTag());
+ add(new DashboardPanel("dashboard", Model.of(WebSession.getDashboard())).setRtlModel(Model.of(isRtl)));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidget.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidget.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidget.java
index eadac94..f7353b1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidget.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidget.java
@@ -1,49 +1,49 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.AbstractWidget;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.WidgetLocation;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class RecentRoomsWidget extends AbstractWidget {
- private static final long serialVersionUID = 1L;
- public static final String WIDGET_ID_RECENT_ROOMS = "RecentRoomsWidget";
-
- public RecentRoomsWidget() {
- super();
- location = new WidgetLocation(1, 1);
- init();
- }
-
- @Override
- public void init() {
- super.init();
- title = Application.getString("widget.recent.title");
- id = WIDGET_ID_RECENT_ROOMS;
- }
-
- @Override
- public WidgetView createView(String viewId) {
- return new RecentRoomsWidgetView(viewId, new Model<Widget>(this));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.AbstractWidget;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.WidgetLocation;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class RecentRoomsWidget extends AbstractWidget {
+ private static final long serialVersionUID = 1L;
+ public static final String WIDGET_ID_RECENT_ROOMS = "RecentRoomsWidget";
+
+ public RecentRoomsWidget() {
+ super();
+ location = new WidgetLocation(1, 1);
+ init();
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ title = Application.getString("widget.recent.title");
+ id = WIDGET_ID_RECENT_ROOMS;
+ }
+
+ @Override
+ public WidgetView createView(String viewId) {
+ return new RecentRoomsWidgetView(viewId, new Model<Widget>(this));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetDescriptor.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetDescriptor.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetDescriptor.java
index 010e38a..feb2e12 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetDescriptor.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetDescriptor.java
@@ -1,51 +1,51 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.wicketstuff.dashboard.WidgetDescriptor;
-
-public class RecentRoomsWidgetDescriptor implements WidgetDescriptor {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getName() {
- return Application.getString("widget.recent.title");
- }
-
- @Override
- public String getProvider() {
- return "Apache Openmeetings";
- }
-
- @Override
- public String getDescription() {
- return Application.getString("widget.recent.desc");
- }
-
- @Override
- public String getWidgetClassName() {
- return RecentRoomsWidget.class.getName();
- }
-
- @Override
- public String getTypeName() {
- return "om.widget.recentrooms";
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.wicketstuff.dashboard.WidgetDescriptor;
+
+public class RecentRoomsWidgetDescriptor implements WidgetDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getName() {
+ return Application.getString("widget.recent.title");
+ }
+
+ @Override
+ public String getProvider() {
+ return "Apache Openmeetings";
+ }
+
+ @Override
+ public String getDescription() {
+ return Application.getString("widget.recent.desc");
+ }
+
+ @Override
+ public String getWidgetClassName() {
+ return RecentRoomsWidget.class.getName();
+ }
+
+ @Override
+ public String getTypeName() {
+ return "om.widget.recentrooms";
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.html
index c37eccc..87cfeae 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.html
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div wicket:id="rooms"></div>
- </wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div wicket:id="rooms"></div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.java
index 32b967e..73a3ef9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.java
@@ -1,38 +1,38 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.web.user.rooms.RoomsPanel;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class RecentRoomsWidgetView extends WidgetView {
- private static final long serialVersionUID = 1L;
-
- public RecentRoomsWidgetView(String id, Model<Widget> model) {
- super(id, model);
-
- add(new RoomsPanel("rooms", getBean(RoomDao.class).getRecent(getUserId())));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.web.user.rooms.RoomsPanel;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class RecentRoomsWidgetView extends WidgetView {
+ private static final long serialVersionUID = 1L;
+
+ public RecentRoomsWidgetView(String id, Model<Widget> model) {
+ super(id, model);
+
+ add(new RoomsPanel("rooms", getBean(RoomDao.class).getRecent(getUserId())));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
index aee9f3b..674c350 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
@@ -1,49 +1,49 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.AbstractWidget;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.WidgetLocation;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class RssWidget extends AbstractWidget {
- private static final long serialVersionUID = 1L;
- public static final String WIDGET_ID_RSS = "RssWidget";
-
- public RssWidget() {
- super();
- location = new WidgetLocation(1, 1);
- init();
- }
-
- @Override
- public void init() {
- super.init();
- title = Application.getString(277L);
- id = WIDGET_ID_RSS;
- }
-
- @Override
- public WidgetView createView(String viewId) {
- return new RssWidgetView(viewId, new Model<Widget>(this));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.AbstractWidget;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.WidgetLocation;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class RssWidget extends AbstractWidget {
+ private static final long serialVersionUID = 1L;
+ public static final String WIDGET_ID_RSS = "RssWidget";
+
+ public RssWidget() {
+ super();
+ location = new WidgetLocation(1, 1);
+ init();
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ title = Application.getString(277L);
+ id = WIDGET_ID_RSS;
+ }
+
+ @Override
+ public WidgetView createView(String viewId) {
+ return new RssWidgetView(viewId, new Model<Widget>(this));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetDescriptor.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetDescriptor.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetDescriptor.java
index 09487b3..ae33186 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetDescriptor.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetDescriptor.java
@@ -1,51 +1,51 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.wicketstuff.dashboard.WidgetDescriptor;
-
-public class RssWidgetDescriptor implements WidgetDescriptor {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getName() {
- return Application.getString(277L);
- }
-
- @Override
- public String getProvider() {
- return "Apache Openmeetings";
- }
-
- @Override
- public String getDescription() {
- return Application.getString(277L);
- }
-
- @Override
- public String getWidgetClassName() {
- return RssWidget.class.getName();
- }
-
- @Override
- public String getTypeName() {
- return "om.widget.rss";
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.wicketstuff.dashboard.WidgetDescriptor;
+
+public class RssWidgetDescriptor implements WidgetDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getName() {
+ return Application.getString(277L);
+ }
+
+ @Override
+ public String getProvider() {
+ return "Apache Openmeetings";
+ }
+
+ @Override
+ public String getDescription() {
+ return Application.getString(277L);
+ }
+
+ @Override
+ public String getWidgetClassName() {
+ return RssWidget.class.getName();
+ }
+
+ @Override
+ public String getTypeName() {
+ return "om.widget.rss";
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.java
index 6d97152..3040e0f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.java
@@ -1,97 +1,97 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import static org.apache.openmeetings.core.rss.LoadAtomRssFeed.getFeedConnection;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RSS_FEED1_KEY;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RSS_FEED2_KEY;
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.wicket.behavior.AbstractAjaxBehavior;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
-import org.apache.wicket.request.resource.ContentDisposition;
-import org.apache.wicket.util.resource.AbstractResourceStream;
-import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class RssWidgetView extends WidgetView {
- private static final long serialVersionUID = 1L;
- private RSSFeedBehavior feed1;
- private RSSFeedBehavior feed2;
-
- public RssWidgetView(String id, Model<Widget> model) {
- super(id, model);
- ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
- add(feed1 = new RSSFeedBehavior(cfgDao.getConfValue(CONFIG_RSS_FEED1_KEY, String.class, "")));
- add(feed2 = new RSSFeedBehavior(cfgDao.getConfValue(CONFIG_RSS_FEED2_KEY, String.class, "")));
- }
-
- @Override
- public void renderHead(IHeaderResponse response) {
- super.renderHead(response);
- response.render(OnDomReadyHeaderItem.forScript("loadRssTab('" + feed1.getCallbackUrl() + "',"
- + "'" + feed2.getCallbackUrl() + "');")) ;
- }
-
- static class RSSFeedBehavior extends AbstractAjaxBehavior {
- private static final long serialVersionUID = 1L;
- private String url;
-
- RSSFeedBehavior(String url) {
- this.url = url;
- }
-
- @Override
- public void onRequest() {
- ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(new AbstractResourceStream() {
- private static final long serialVersionUID = 1L;
- transient HttpURLConnection con;
-
- @Override
- public InputStream getInputStream() throws ResourceStreamNotFoundException {
- try {
- con = getFeedConnection(url);
- con.connect();
- return con.getInputStream();
- } catch (IOException e) {
- throw new ResourceStreamNotFoundException();
- }
- }
-
- @Override
- public void close() throws IOException {
- if (con != null) {
- con.disconnect();
- }
- }
- }, "feed");
- handler.setContentDisposition(ContentDisposition.ATTACHMENT);
- getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import static org.apache.openmeetings.core.rss.LoadAtomRssFeed.getFeedConnection;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RSS_FEED1_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RSS_FEED2_KEY;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.wicket.behavior.AbstractAjaxBehavior;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.util.resource.AbstractResourceStream;
+import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class RssWidgetView extends WidgetView {
+ private static final long serialVersionUID = 1L;
+ private RSSFeedBehavior feed1;
+ private RSSFeedBehavior feed2;
+
+ public RssWidgetView(String id, Model<Widget> model) {
+ super(id, model);
+ ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+ add(feed1 = new RSSFeedBehavior(cfgDao.getConfValue(CONFIG_RSS_FEED1_KEY, String.class, "")));
+ add(feed2 = new RSSFeedBehavior(cfgDao.getConfValue(CONFIG_RSS_FEED2_KEY, String.class, "")));
+ }
+
+ @Override
+ public void renderHead(IHeaderResponse response) {
+ super.renderHead(response);
+ response.render(OnDomReadyHeaderItem.forScript("loadRssTab('" + feed1.getCallbackUrl() + "',"
+ + "'" + feed2.getCallbackUrl() + "');")) ;
+ }
+
+ static class RSSFeedBehavior extends AbstractAjaxBehavior {
+ private static final long serialVersionUID = 1L;
+ private String url;
+
+ RSSFeedBehavior(String url) {
+ this.url = url;
+ }
+
+ @Override
+ public void onRequest() {
+ ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(new AbstractResourceStream() {
+ private static final long serialVersionUID = 1L;
+ transient HttpURLConnection con;
+
+ @Override
+ public InputStream getInputStream() throws ResourceStreamNotFoundException {
+ try {
+ con = getFeedConnection(url);
+ con.connect();
+ return con.getInputStream();
+ } catch (IOException e) {
+ throw new ResourceStreamNotFoundException();
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ if (con != null) {
+ con.disconnect();
+ }
+ }
+ }, "feed");
+ handler.setContentDisposition(ContentDisposition.ATTACHMENT);
+ getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
index 0591b78..df1d775 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
@@ -1,48 +1,48 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.AbstractWidget;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.WidgetLocation;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class StartWidget extends AbstractWidget {
- private static final long serialVersionUID = 1L;
-
- public StartWidget() {
- super();
- location = new WidgetLocation(1, 0);
- init();
- }
-
- @Override
- public void init() {
- super.init();
- title = Application.getString(774L);
- id = "StartWidget";
- }
-
- @Override
- public WidgetView createView(String viewId) {
- return new StartWidgetView(viewId, new Model<Widget>(this));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.AbstractWidget;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.WidgetLocation;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class StartWidget extends AbstractWidget {
+ private static final long serialVersionUID = 1L;
+
+ public StartWidget() {
+ super();
+ location = new WidgetLocation(1, 0);
+ init();
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ title = Application.getString(774L);
+ id = "StartWidget";
+ }
+
+ @Override
+ public WidgetView createView(String viewId) {
+ return new StartWidgetView(viewId, new Model<Widget>(this));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetDescriptor.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetDescriptor.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetDescriptor.java
index 1646202..42905b9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetDescriptor.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetDescriptor.java
@@ -1,51 +1,51 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.wicketstuff.dashboard.WidgetDescriptor;
-
-public class StartWidgetDescriptor implements WidgetDescriptor {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getName() {
- return Application.getString(774L);
- }
-
- @Override
- public String getProvider() {
- return "Apache Openmeetings";
- }
-
- @Override
- public String getDescription() {
- return Application.getString(804L);
- }
-
- @Override
- public String getWidgetClassName() {
- return StartWidget.class.getName();
- }
-
- @Override
- public String getTypeName() {
- return "om.widget.start";
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.wicketstuff.dashboard.WidgetDescriptor;
+
+public class StartWidgetDescriptor implements WidgetDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getName() {
+ return Application.getString(774L);
+ }
+
+ @Override
+ public String getProvider() {
+ return "Apache Openmeetings";
+ }
+
+ @Override
+ public String getDescription() {
+ return Application.getString(804L);
+ }
+
+ @Override
+ public String getWidgetClassName() {
+ return StartWidget.class.getName();
+ }
+
+ @Override
+ public String getTypeName() {
+ return "om.widget.start";
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
index 2438949..8bda8c8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <h3><wicket:message key="774"/></h3>
- <div><div wicket:id="step1" class="clickable start_step1"><wicket:message key="768"/></div></div>
- <div><div wicket:id="step2" class="clickable start_step2"><wicket:message key="771"/></div></div>
- <div><div wicket:id="step3" class="clickable start_step3"><wicket:message key="772"/></div></div>
- <div><div wicket:id="step4" class="clickable start_step4"><wicket:message key="773"/></div></div>
- <table>
- <tr>
- <td><div wicket:id="123msg"></div></td>
- <td>
- <button wicket:id="start" type="button"><wicket:message key="788"/></button><br/>
- <button wicket:id="calendar" type="button"><wicket:message key="291"/></button>
- </td>
- </tr>
- </table>
- </wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <h3><wicket:message key="774"/></h3>
+ <div><div wicket:id="step1" class="clickable start_step1"><wicket:message key="768"/></div></div>
+ <div><div wicket:id="step2" class="clickable start_step2"><wicket:message key="771"/></div></div>
+ <div><div wicket:id="step3" class="clickable start_step3"><wicket:message key="772"/></div></div>
+ <div><div wicket:id="step4" class="clickable start_step4"><wicket:message key="773"/></div></div>
+ <table>
+ <tr>
+ <td><div wicket:id="123msg"></div></td>
+ <td>
+ <button wicket:id="start" type="button"><wicket:message key="788"/></button><br/>
+ <button wicket:id="calendar" type="button"><wicket:message key="291"/></button>
+ </td>
+ </tr>
+ </table>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.java
index 00d25b1..df523b1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.java
@@ -1,69 +1,69 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import static org.apache.openmeetings.web.util.OmUrlFragment.CALENDAR;
-import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC;
-
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.pages.MainPage;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-import com.googlecode.wicket.jquery.ui.form.button.Button;
-
-public class StartWidgetView extends WidgetView {
- private static final long serialVersionUID = 1L;
-
- public StartWidgetView(String id, Model<Widget> model) {
- super(id, model);
- add(new WebMarkupContainer("step1").add(new PublicRoomsEventBehavior()));
- add(new WebMarkupContainer("step2").add(new PublicRoomsEventBehavior()));
- add(new WebMarkupContainer("step3").add(new PublicRoomsEventBehavior()));
- add(new WebMarkupContainer("step4").add(new PublicRoomsEventBehavior()));
- add(new Label("123msg", Application.getString(804)).setEscapeModelStrings(false));
- add(new Button("start").add(new PublicRoomsEventBehavior()));
- add(new Button("calendar").add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- ((MainPage)getPage()).updateContents(CALENDAR, target);
- }
- }));
- }
-
- private class PublicRoomsEventBehavior extends AjaxEventBehavior {
- private static final long serialVersionUID = 1L;
-
- public PublicRoomsEventBehavior() {
- super("click");
- }
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- ((MainPage)getPage()).updateContents(ROOMS_PUBLIC, target);
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import static org.apache.openmeetings.web.util.OmUrlFragment.CALENDAR;
+import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+import com.googlecode.wicket.jquery.ui.form.button.Button;
+
+public class StartWidgetView extends WidgetView {
+ private static final long serialVersionUID = 1L;
+
+ public StartWidgetView(String id, Model<Widget> model) {
+ super(id, model);
+ add(new WebMarkupContainer("step1").add(new PublicRoomsEventBehavior()));
+ add(new WebMarkupContainer("step2").add(new PublicRoomsEventBehavior()));
+ add(new WebMarkupContainer("step3").add(new PublicRoomsEventBehavior()));
+ add(new WebMarkupContainer("step4").add(new PublicRoomsEventBehavior()));
+ add(new Label("123msg", Application.getString(804)).setEscapeModelStrings(false));
+ add(new Button("start").add(new PublicRoomsEventBehavior()));
+ add(new Button("calendar").add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ ((MainPage)getPage()).updateContents(CALENDAR, target);
+ }
+ }));
+ }
+
+ private class PublicRoomsEventBehavior extends AjaxEventBehavior {
+ private static final long serialVersionUID = 1L;
+
+ public PublicRoomsEventBehavior() {
+ super("click");
+ }
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ ((MainPage)getPage()).updateContents(ROOMS_PUBLIC, target);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
index c28b4e9..b0b56be 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
@@ -1,48 +1,48 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.model.Model;
-import org.wicketstuff.dashboard.AbstractWidget;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.WidgetLocation;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class WelcomeWidget extends AbstractWidget {
- private static final long serialVersionUID = 1L;
-
- public WelcomeWidget() {
- super();
- location = new WidgetLocation(0, 0);
- init();
- }
-
- @Override
- public void init() {
- super.init();
- title = Application.getString(1546L);
- id = "WelcomeWidget";
- }
-
- @Override
- public WidgetView createView(String viewId) {
- return new WelcomeWidgetView(viewId, new Model<Widget>(this));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.model.Model;
+import org.wicketstuff.dashboard.AbstractWidget;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.WidgetLocation;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class WelcomeWidget extends AbstractWidget {
+ private static final long serialVersionUID = 1L;
+
+ public WelcomeWidget() {
+ super();
+ location = new WidgetLocation(0, 0);
+ init();
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ title = Application.getString(1546L);
+ id = "WelcomeWidget";
+ }
+
+ @Override
+ public WidgetView createView(String viewId) {
+ return new WelcomeWidgetView(viewId, new Model<Widget>(this));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetDescriptor.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetDescriptor.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetDescriptor.java
index 5d888e8..241ba59 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetDescriptor.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetDescriptor.java
@@ -1,51 +1,51 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import org.apache.openmeetings.web.app.Application;
-import org.wicketstuff.dashboard.WidgetDescriptor;
-
-public class WelcomeWidgetDescriptor implements WidgetDescriptor {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getName() {
- return Application.getString(1546L);
- }
-
- @Override
- public String getProvider() {
- return "Apache Openmeetings";
- }
-
- @Override
- public String getDescription() {
- return Application.getString(1547L);
- }
-
- @Override
- public String getWidgetClassName() {
- return WelcomeWidget.class.getName();
- }
-
- @Override
- public String getTypeName() {
- return "om.widget.welcome";
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.Application;
+import org.wicketstuff.dashboard.WidgetDescriptor;
+
+public class WelcomeWidgetDescriptor implements WidgetDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getName() {
+ return Application.getString(1546L);
+ }
+
+ @Override
+ public String getProvider() {
+ return "Apache Openmeetings";
+ }
+
+ @Override
+ public String getDescription() {
+ return Application.getString(1547L);
+ }
+
+ @Override
+ public String getWidgetClassName() {
+ return WelcomeWidget.class.getName();
+ }
+
+ @Override
+ public String getTypeName() {
+ return "om.widget.welcome";
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.html
index 5e39f51..4736e23 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.html
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <table>
- <tr>
- <td><div wicket:id="img"></div></td>
- <td>
- <h3><wicket:message key="376"/> <span wicket:id="firstname"></span> <span wicket:id="lastname"></span></h3>
- <wicket:message key="1143"/> <span wicket:id="tz"></span><br/>
- <wicket:message key="378"/> <a wicket:id="openUnread"><span wicket:id="unread"></span></a><br/>
- <a wicket:id="editProfile"><wicket:message key="377"/></a>
- </td>
- </tr>
- <tr>
- <td colspan="2" class="help support">
- <h3><wicket:message key="281"/></h3>
- <a wicket:message="href:282"><wicket:message key="286"/></a><br/>
- <a wicket:message="href:283"><wicket:message key="287"/></a><br/>
- <a wicket:id="netTest" target="_blank"><wicket:message key="1527"/></a><br/>
- </td>
- </tr>
- </table>
-</wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <table>
+ <tr>
+ <td><div wicket:id="img"></div></td>
+ <td>
+ <h3><wicket:message key="376"/> <span wicket:id="firstname"></span> <span wicket:id="lastname"></span></h3>
+ <wicket:message key="1143"/> <span wicket:id="tz"></span><br/>
+ <wicket:message key="378"/> <a wicket:id="openUnread"><span wicket:id="unread"></span></a><br/>
+ <a wicket:id="editProfile"><wicket:message key="377"/></a>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="help support">
+ <h3><wicket:message key="281"/></h3>
+ <a wicket:message="href:282"><wicket:message key="286"/></a><br/>
+ <a wicket:message="href:283"><wicket:message key="287"/></a><br/>
+ <a wicket:id="netTest" target="_blank"><wicket:message key="1527"/></a><br/>
+ </td>
+ </tr>
+ </table>
+</wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
index ba2664c..4c4543b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
@@ -1,81 +1,81 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.dashboard;
-
-import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.apache.openmeetings.web.room.SwfPanel.SWF;
-import static org.apache.openmeetings.web.room.SwfPanel.SWF_TYPE_NETWORK;
-import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_EDIT;
-import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
-
-import org.apache.openmeetings.db.dao.user.PrivateMessageDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.web.common.UploadableProfileImagePanel;
-import org.apache.openmeetings.web.pages.HashPage;
-import org.apache.openmeetings.web.pages.MainPage;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.Link;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.wicketstuff.dashboard.Widget;
-import org.wicketstuff.dashboard.web.WidgetView;
-
-public class WelcomeWidgetView extends WidgetView {
- private static final long serialVersionUID = 1L;
-
- public WelcomeWidgetView(String id, Model<Widget> model) {
- super(id, model);
-
- User u = getBean(UserDao.class).get(getUserId());
- add(new UploadableProfileImagePanel("img", getUserId()));
- //FIXME this need to be aligned according to Locale
- add(new Label("firstname", Model.of(u.getFirstname())));
- add(new Label("lastname", Model.of(u.getLastname())));
- add(new Label("tz", Model.of(u.getTimeZoneId())));
- add(new AjaxLink<Void>("openUnread") {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- ((MainPage)getPage()).updateContents(PROFILE_MESSAGES, target);
- }
- }.add(new Label("unread", Model.of("" + getBean(PrivateMessageDao.class).count(getUserId(), INBOX_FOLDER_ID, null)))));
- add(new AjaxLink<Void>("editProfile") {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- ((MainPage)getPage()).updateContents(PROFILE_EDIT, target);
- }
- });
- add(new Link<Void>("netTest") {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick() {
- setResponsePage(HashPage.class, new PageParameters().add(SWF, SWF_TYPE_NETWORK));
- }
- });
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.room.SwfPanel.SWF;
+import static org.apache.openmeetings.web.room.SwfPanel.SWF_TYPE_NETWORK;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_EDIT;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
+
+import org.apache.openmeetings.db.dao.user.PrivateMessageDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.common.UploadableProfileImagePanel;
+import org.apache.openmeetings.web.pages.HashPage;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.wicketstuff.dashboard.Widget;
+import org.wicketstuff.dashboard.web.WidgetView;
+
+public class WelcomeWidgetView extends WidgetView {
+ private static final long serialVersionUID = 1L;
+
+ public WelcomeWidgetView(String id, Model<Widget> model) {
+ super(id, model);
+
+ User u = getBean(UserDao.class).get(getUserId());
+ add(new UploadableProfileImagePanel("img", getUserId()));
+ //FIXME this need to be aligned according to Locale
+ add(new Label("firstname", Model.of(u.getFirstname())));
+ add(new Label("lastname", Model.of(u.getLastname())));
+ add(new Label("tz", Model.of(u.getTimeZoneId())));
+ add(new AjaxLink<Void>("openUnread") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ ((MainPage)getPage()).updateContents(PROFILE_MESSAGES, target);
+ }
+ }.add(new Label("unread", Model.of("" + getBean(PrivateMessageDao.class).count(getUserId(), INBOX_FOLDER_ID, null)))));
+ add(new AjaxLink<Void>("editProfile") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ ((MainPage)getPage()).updateContents(PROFILE_EDIT, target);
+ }
+ });
+ add(new Link<Void>("netTest") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick() {
+ setResponsePage(HashPage.class, new PageParameters().add(SWF, SWF_TYPE_NETWORK));
+ }
+ });
+ }
+}
[06/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
index 8346aa1..bb19049 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
@@ -1,157 +1,157 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.pages.auth;
-
-import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.util.NonClosableDialog;
-import org.apache.openmeetings.web.util.NonClosableMessageDialog;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.PasswordTextField;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.Model;
-
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
-import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
-import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
-
-public class ResetPasswordDialog extends NonClosableDialog<String> {
- private static final long serialVersionUID = 1L;
- private DialogButton resetBtn = new DialogButton("reset", Application.getString(327));
- private Form<String> form;
- private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
- private PasswordTextField password;
- private final User user;
- final MessageDialog confirmReset;
-
- public ResetPasswordDialog(String id, final User user) {
- super(id, Application.getString(325));
- this.user = user;
- add(form = new Form<String>("form") {
- private static final long serialVersionUID = 1L;
- private TextField<String> login;
- private PasswordTextField confirmPassword;
- {
- add(feedback.setOutputMarkupId(true));
- add(login = new TextField<>("login", Model.of(user.getLogin())));
- login.setOutputMarkupId(true);
- add(password = new PasswordTextField("password", new Model<String>()));
- password.setOutputMarkupId(true);
- password.setLabel(Model.of(Application.getString(328)));
- ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
- password.setRequired(false).add(minimumLength(getMinPasswdLength(cfgDao)));
- add(confirmPassword = new PasswordTextField("confirmPassword", new Model<String>()));
- confirmPassword.setOutputMarkupId(true);
- confirmPassword.setLabel(Model.of(Application.getString(329)));
- confirmPassword.setRequired(true).add(minimumLength(getMinPasswdLength(cfgDao)));
-
- add(new AjaxButton("submit") { // FAKE button so "submit-on-enter" works as expected
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- ResetPasswordDialog.this.onSubmit(target);
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- ResetPasswordDialog.this.onError(target);
- }
- });
- }
-
- @Override
- protected void onValidate() {
- String pass = password.getConvertedInput();
- if (pass != null && !pass.isEmpty() && !pass.equals(confirmPassword.getConvertedInput())) {
- error(Application.getString(232));
- }
- super.onValidate();
- }
-
- });
- confirmReset = new NonClosableMessageDialog("confirmReset", Application.getString(325), Application.getString(332)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
- setResponsePage(Application.get().getSignInPageClass());
- }
- };
- add(confirmReset);
- }
-
- @Override
- public void onConfigure(JQueryBehavior behavior) {
- super.onConfigure(behavior);
- behavior.setOption("autoOpen", true);
- }
-
- @Override
- protected List<DialogButton> getButtons() {
- return Arrays.asList(resetBtn);
- }
-
- @Override
- public DialogButton getSubmitButton() {
- return resetBtn;
- }
-
- @Override
- public Form<?> getForm() {
- return form;
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- target.add(feedback);
- }
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- try {
- getBean(UserDao.class).resetPassword(user, password.getConvertedInput());
- } catch (Exception e) {
- error(e.getMessage());
- }
- }
-
- @Override
- public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
- if (resetBtn.equals(button)) {
- confirmReset.open(handler);
- } else {
- setResponsePage(Application.get().getSignInPageClass());
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.pages.auth;
+
+import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.util.NonClosableDialog;
+import org.apache.openmeetings.web.util.NonClosableMessageDialog;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public class ResetPasswordDialog extends NonClosableDialog<String> {
+ private static final long serialVersionUID = 1L;
+ private DialogButton resetBtn = new DialogButton("reset", Application.getString(327));
+ private Form<String> form;
+ private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+ private PasswordTextField password;
+ private final User user;
+ final MessageDialog confirmReset;
+
+ public ResetPasswordDialog(String id, final User user) {
+ super(id, Application.getString(325));
+ this.user = user;
+ add(form = new Form<String>("form") {
+ private static final long serialVersionUID = 1L;
+ private TextField<String> login;
+ private PasswordTextField confirmPassword;
+ {
+ add(feedback.setOutputMarkupId(true));
+ add(login = new TextField<>("login", Model.of(user.getLogin())));
+ login.setOutputMarkupId(true);
+ add(password = new PasswordTextField("password", new Model<String>()));
+ password.setOutputMarkupId(true);
+ password.setLabel(Model.of(Application.getString(328)));
+ ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+ password.setRequired(false).add(minimumLength(getMinPasswdLength(cfgDao)));
+ add(confirmPassword = new PasswordTextField("confirmPassword", new Model<String>()));
+ confirmPassword.setOutputMarkupId(true);
+ confirmPassword.setLabel(Model.of(Application.getString(329)));
+ confirmPassword.setRequired(true).add(minimumLength(getMinPasswdLength(cfgDao)));
+
+ add(new AjaxButton("submit") { // FAKE button so "submit-on-enter" works as expected
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ ResetPasswordDialog.this.onSubmit(target);
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ ResetPasswordDialog.this.onError(target);
+ }
+ });
+ }
+
+ @Override
+ protected void onValidate() {
+ String pass = password.getConvertedInput();
+ if (pass != null && !pass.isEmpty() && !pass.equals(confirmPassword.getConvertedInput())) {
+ error(Application.getString(232));
+ }
+ super.onValidate();
+ }
+
+ });
+ confirmReset = new NonClosableMessageDialog("confirmReset", Application.getString(325), Application.getString(332)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+ setResponsePage(Application.get().getSignInPageClass());
+ }
+ };
+ add(confirmReset);
+ }
+
+ @Override
+ public void onConfigure(JQueryBehavior behavior) {
+ super.onConfigure(behavior);
+ behavior.setOption("autoOpen", true);
+ }
+
+ @Override
+ protected List<DialogButton> getButtons() {
+ return Arrays.asList(resetBtn);
+ }
+
+ @Override
+ public DialogButton getSubmitButton() {
+ return resetBtn;
+ }
+
+ @Override
+ public Form<?> getForm() {
+ return form;
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ target.add(feedback);
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ try {
+ getBean(UserDao.class).resetPassword(user, password.getConvertedInput());
+ } catch (Exception e) {
+ error(e.getMessage());
+ }
+ }
+
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+ if (resetBtn.equals(button)) {
+ confirmReset.open(handler);
+ } else {
+ setResponsePage(Application.get().getSignInPageClass());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.html
index 9c025cb..a69db09 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.html
@@ -1,42 +1,42 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <table>
- <tr>
- <td><wicket:message key="1550" /></td>
- <td wicket:id="name">[name]</td>
- </tr>
- <tr>
- <td><wicket:message key="1551" /></td>
- <td wicket:id="version">[version]</td>
- </tr>
- <tr>
- <td><wicket:message key="1552" /></td>
- <td wicket:id="revision">[revision]</td>
- </tr>
- <tr>
- <td><wicket:message key="1553" /></td>
- <td wicket:id="buildDate">[buildDate]</td>
- </tr>
- </table>
-</wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <table>
+ <tr>
+ <td><wicket:message key="1550" /></td>
+ <td wicket:id="name">[name]</td>
+ </tr>
+ <tr>
+ <td><wicket:message key="1551" /></td>
+ <td wicket:id="version">[version]</td>
+ </tr>
+ <tr>
+ <td><wicket:message key="1552" /></td>
+ <td wicket:id="revision">[revision]</td>
+ </tr>
+ <tr>
+ <td><wicket:message key="1553" /></td>
+ <td wicket:id="buildDate">[buildDate]</td>
+ </tr>
+ </table>
+</wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java
index 50718e4..ab92bbe 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java
@@ -1,57 +1,57 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user;
-
-import static org.apache.openmeetings.util.Version.getBuildDate;
-import static org.apache.openmeetings.util.Version.getRevision;
-import static org.apache.openmeetings.util.Version.getVersion;
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.basic.Label;
-
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-
-public class AboutDialog extends AbstractDialog<String> {
- private static final long serialVersionUID = 1L;
-
- public AboutDialog(String id) {
- super(id, Application.getString(1549));
-
- add(new Label("name", getBean(ConfigurationDao.class).getAppName()));
- add(new Label("version", getVersion()));
- add(new Label("revision", getRevision()));
- add(new Label("buildDate", getBuildDate()));
- }
-
- @Override
- protected List<DialogButton> getButtons() {
- return new ArrayList<>();
- }
-
- @Override
- public void onClose(IPartialPageRequestHandler handler, DialogButton arg1) {
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user;
+
+import static org.apache.openmeetings.util.Version.getBuildDate;
+import static org.apache.openmeetings.util.Version.getRevision;
+import static org.apache.openmeetings.util.Version.getVersion;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.basic.Label;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class AboutDialog extends AbstractDialog<String> {
+ private static final long serialVersionUID = 1L;
+
+ public AboutDialog(String id) {
+ super(id, Application.getString(1549));
+
+ add(new Label("name", getBean(ConfigurationDao.class).getAppName()));
+ add(new Label("version", getVersion()));
+ add(new Label("revision", getRevision()));
+ add(new Label("buildDate", getBuildDate()));
+ }
+
+ @Override
+ protected List<DialogButton> getButtons() {
+ return new ArrayList<>();
+ }
+
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton arg1) {
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.html
index 42cd4b3..f450843 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.html
@@ -1,27 +1,27 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <div wicket:id="container">
- <div wicket:id="body"></div>
- </div>
-</wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div wicket:id="container">
+ <div wicket:id="body"></div>
+ </div>
+</wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java
index 0cab471..50f3472 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java
@@ -1,83 +1,83 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.user.UserContactDao;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.user.profile.UserProfilePanel;
-import org.apache.openmeetings.web.util.ContactsHelper;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-
-public class UserInfoDialog extends AbstractDialog<String> {
- private static final long serialVersionUID = 1L;
- private WebMarkupContainer container = new WebMarkupContainer("container");
- private DialogButton cancel = new DialogButton("cancel", Application.getString(61));
- private DialogButton message = new DialogButton("message", Application.getString(1253));
- private DialogButton contacts = new DialogButton("contacts", Application.getString(1186));
- private MessageDialog newMessage;
- private long userId;
-
- public UserInfoDialog(String id, MessageDialog newMessage) {
- super(id, Application.getString(1235));
- add(container.add(new WebMarkupContainer("body")).setOutputMarkupId(true));
- this.newMessage = newMessage;
- }
-
- public void open(IPartialPageRequestHandler handler, long userId) {
- this.userId = userId;
- contacts.setVisible(userId != getUserId() && getBean(UserContactDao.class).get(userId, getUserId()) == null, handler);
- message.setVisible(userId != getUserId(), handler);
- container.replace(new UserProfilePanel("body", userId));
- handler.add(container);
- open(handler);
- }
-
- public WebMarkupContainer getContainer() {
- return container;
- }
-
- @Override
- public int getWidth() {
- return 600;
- }
-
- @Override
- protected List<DialogButton> getButtons() {
- return Arrays.asList(contacts, message, cancel);
- }
-
- @Override
- public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
- if (message.equals(button)) {
- newMessage.reset(false).open(handler, userId);
- } else if (contacts.equals(button)) {
- ContactsHelper.addUserToContactList(userId);
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.UserContactDao;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.user.profile.UserProfilePanel;
+import org.apache.openmeetings.web.util.ContactsHelper;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class UserInfoDialog extends AbstractDialog<String> {
+ private static final long serialVersionUID = 1L;
+ private WebMarkupContainer container = new WebMarkupContainer("container");
+ private DialogButton cancel = new DialogButton("cancel", Application.getString(61));
+ private DialogButton message = new DialogButton("message", Application.getString(1253));
+ private DialogButton contacts = new DialogButton("contacts", Application.getString(1186));
+ private MessageDialog newMessage;
+ private long userId;
+
+ public UserInfoDialog(String id, MessageDialog newMessage) {
+ super(id, Application.getString(1235));
+ add(container.add(new WebMarkupContainer("body")).setOutputMarkupId(true));
+ this.newMessage = newMessage;
+ }
+
+ public void open(IPartialPageRequestHandler handler, long userId) {
+ this.userId = userId;
+ contacts.setVisible(userId != getUserId() && getBean(UserContactDao.class).get(userId, getUserId()) == null, handler);
+ message.setVisible(userId != getUserId(), handler);
+ container.replace(new UserProfilePanel("body", userId));
+ handler.add(container);
+ open(handler);
+ }
+
+ public WebMarkupContainer getContainer() {
+ return container;
+ }
+
+ @Override
+ public int getWidth() {
+ return 600;
+ }
+
+ @Override
+ protected List<DialogButton> getButtons() {
+ return Arrays.asList(contacts, message, cancel);
+ }
+
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+ if (message.equals(button)) {
+ newMessage.reset(false).open(handler, userId);
+ } else if (contacts.equals(button)) {
+ ContactsHelper.addUserToContactList(userId);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
index 2d5276e..6a69179 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
@@ -1,121 +1,121 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <form wicket:id="appForm" class="appointmentPopUp">
- <span wicket:id="feedback"></span>
- <div id="tabs">
- <ul>
- <li><a href="#tab1"><wicket:message key="appointment.tab.general"/></a></li>
- <li><a href="#tab2"><wicket:message key="436"/></a></li>
- <li><a href="#tab3"><wicket:message key="appointment.tab.advanced"/></a></li>
- </ul>
- <div id="tab1">
- <div class="table">
- <div>
- <div class="column label"><wicket:message key="572" /></div>
- <div class="column data"><input type="text" wicket:id="title" /></div>
- </div>
- <div>
- <div class="column label"><wicket:message key="570" /></div>
- <div class="column data"><span class="date time picker" wicket:id="start"></span></div>
- </div>
- <div>
- <div class="column label"><wicket:message key="571" /></div>
- <div class="column data"><span class="date time picker" wicket:id="end"></span></div>
- </div>
- <div wicket:id="owner-row">
- <div class="column label"><wicket:message key="1156" /></div>
- <div class="column data"><span wicket:id="aowner"></span></div>
- </div>
- <div wicket:id="inviteeType">
- <div>
- <div class="column label"><input type="radio" wicket:id="user"/><label wicket:for="user"><wicket:message key="803" /></label></div>
- <div class="column data om-select2" wicket:message="title:1588"><select class="appointment attendees input" wicket:id="attendees"></select></div>
- </div>
- <div wicket:id="groupContainer">
- <div class="column label"><input type="radio" wicket:id="group"/><label wicket:for="group"><wicket:message key="126" /></label></div>
- <div class="column data om-select2"><select wicket:id="groups" class="input invitees"></select></div>
- </div>
- </div>
- <div>
- <div class="column label"><wicket:message key="569" /></div>
- <div class="column data"><input type="text" wicket:id="location" /></div>
- </div>
- <div>
- <div class="column label"><wicket:message key="573" /></div>
- <div class="column data">
- <div wicket:id="toolbarContainer"></div>
- <div wicket:id="description"></div>
- </div>
- </div>
- </div>
- </div>
- <div id="tab2">
- <div class="table">
- <div>
- <input type="checkbox" wicket:id="createRoom" /><label wicket:for="createRoom"><wicket:message key="1509" /></label>
- </div>
- <div wicket:id="create-room-block">
- <div>
- <div class="column label"><wicket:message key="619" /></div>
- <div class="column data"><select wicket:id="type" ></select></div>
- </div>
- <div>
- <div class="column label"><label wicket:for="moderated"><wicket:message key="640" /></label></div>
- <div class="column data"><input type="checkbox" wicket:id="moderated" /></div>
- </div>
- </div>
- <div>
- <div class="column label"><wicket:message key="436" /></div>
- <div class="column data"><select wicket:id="groom" ></select></div>
- </div>
- <div wicket:id="sip-container">
- <div class="column label"><wicket:message key="1003"/></div>
- <div class="column data"><span wicket:id="room.confno"></span></div>
- </div>
- </div>
- </div>
- <div id="tab3">
- <div class="table">
- <div>
- <div class="column label"><wicket:message key="565" /></div>
- <div class="column data"><select wicket:id="reminder" ></select></div>
- </div>
- <div>
- <input type="checkbox" wicket:id="passwordProtected" /><label wicket:for="passwordProtected"><wicket:message key="524" /></label>
- </div>
- <div>
- <div class="column label"><wicket:message key="525" /></div>
- <div class="column data"><input type="password" wicket:id="password" /></div>
- </div>
- <div><wicket:message key="1445" /></div>
- <div>
- <div class="column label"><wicket:message key="162" /></div>
- <div class="column data"><select wicket:id="calendar"></select></div>
- </div>
- </div>
- </div>
- </div>
- </form>
- <div wicket:id="confirmDelete"></div>
- </wicket:panel>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <form wicket:id="appForm" class="appointmentPopUp">
+ <span wicket:id="feedback"></span>
+ <div id="tabs">
+ <ul>
+ <li><a href="#tab1"><wicket:message key="appointment.tab.general"/></a></li>
+ <li><a href="#tab2"><wicket:message key="436"/></a></li>
+ <li><a href="#tab3"><wicket:message key="appointment.tab.advanced"/></a></li>
+ </ul>
+ <div id="tab1">
+ <div class="table">
+ <div>
+ <div class="column label"><wicket:message key="572" /></div>
+ <div class="column data"><input type="text" wicket:id="title" /></div>
+ </div>
+ <div>
+ <div class="column label"><wicket:message key="570" /></div>
+ <div class="column data"><span class="date time picker" wicket:id="start"></span></div>
+ </div>
+ <div>
+ <div class="column label"><wicket:message key="571" /></div>
+ <div class="column data"><span class="date time picker" wicket:id="end"></span></div>
+ </div>
+ <div wicket:id="owner-row">
+ <div class="column label"><wicket:message key="1156" /></div>
+ <div class="column data"><span wicket:id="aowner"></span></div>
+ </div>
+ <div wicket:id="inviteeType">
+ <div>
+ <div class="column label"><input type="radio" wicket:id="user"/><label wicket:for="user"><wicket:message key="803" /></label></div>
+ <div class="column data om-select2" wicket:message="title:1588"><select class="appointment attendees input" wicket:id="attendees"></select></div>
+ </div>
+ <div wicket:id="groupContainer">
+ <div class="column label"><input type="radio" wicket:id="group"/><label wicket:for="group"><wicket:message key="126" /></label></div>
+ <div class="column data om-select2"><select wicket:id="groups" class="input invitees"></select></div>
+ </div>
+ </div>
+ <div>
+ <div class="column label"><wicket:message key="569" /></div>
+ <div class="column data"><input type="text" wicket:id="location" /></div>
+ </div>
+ <div>
+ <div class="column label"><wicket:message key="573" /></div>
+ <div class="column data">
+ <div wicket:id="toolbarContainer"></div>
+ <div wicket:id="description"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="tab2">
+ <div class="table">
+ <div>
+ <input type="checkbox" wicket:id="createRoom" /><label wicket:for="createRoom"><wicket:message key="1509" /></label>
+ </div>
+ <div wicket:id="create-room-block">
+ <div>
+ <div class="column label"><wicket:message key="619" /></div>
+ <div class="column data"><select wicket:id="type" ></select></div>
+ </div>
+ <div>
+ <div class="column label"><label wicket:for="moderated"><wicket:message key="640" /></label></div>
+ <div class="column data"><input type="checkbox" wicket:id="moderated" /></div>
+ </div>
+ </div>
+ <div>
+ <div class="column label"><wicket:message key="436" /></div>
+ <div class="column data"><select wicket:id="groom" ></select></div>
+ </div>
+ <div wicket:id="sip-container">
+ <div class="column label"><wicket:message key="1003"/></div>
+ <div class="column data"><span wicket:id="room.confno"></span></div>
+ </div>
+ </div>
+ </div>
+ <div id="tab3">
+ <div class="table">
+ <div>
+ <div class="column label"><wicket:message key="565" /></div>
+ <div class="column data"><select wicket:id="reminder" ></select></div>
+ </div>
+ <div>
+ <input type="checkbox" wicket:id="passwordProtected" /><label wicket:for="passwordProtected"><wicket:message key="524" /></label>
+ </div>
+ <div>
+ <div class="column label"><wicket:message key="525" /></div>
+ <div class="column data"><input type="password" wicket:id="password" /></div>
+ </div>
+ <div><wicket:message key="1445" /></div>
+ <div>
+ <div class="column label"><wicket:message key="162" /></div>
+ <div class="column data"><select wicket:id="calendar"></select></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </form>
+ <div wicket:id="confirmDelete"></div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index e468e36..e721c0b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -1,510 +1,510 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.calendar;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getRights;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
-import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.user.GroupUserDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.calendar.Appointment;
-import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
-import org.apache.openmeetings.db.entity.calendar.MeetingMember;
-import org.apache.openmeetings.db.entity.calendar.OmCalendar;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.util.AuthLevelUtil;
-import org.apache.openmeetings.db.util.FormatHelper;
-import org.apache.openmeetings.service.calendar.caldav.AppointmentManager;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.common.GroupChoiceProvider;
-import org.apache.openmeetings.web.common.OmDateTimePicker;
-import org.apache.openmeetings.web.pages.MainPage;
-import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
-import org.apache.openmeetings.web.util.RoomTypeDropDown;
-import org.apache.openmeetings.web.util.UserMultiChoice;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.ChoiceRenderer;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.markup.html.form.PasswordTextField;
-import org.apache.wicket.markup.html.form.Radio;
-import org.apache.wicket.markup.html.form.RadioGroup;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.model.util.CollectionModel;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.wicketstuff.select2.Select2MultiChoice;
-
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
-import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.JQueryUIBehavior;
-import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
-import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.toolbar.DefaultWysiwygToolbar;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
-import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
-import com.googlecode.wicket.kendo.ui.form.datetime.local.DateTimePicker;
-import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
-
-public class AppointmentDialog extends AbstractFormDialog<Appointment> {
- private static final long serialVersionUID = 1L;
- private static final Logger log = Red5LoggerFactory.getLogger(AppointmentDialog.class, webAppRootKey);
-
- private AppointmentForm form;
- private DialogButton save = new DialogButton("save", Application.getString(813));
- private DialogButton cancel = new DialogButton("cancel", Application.getString(1130));
- private DialogButton delete = new DialogButton("delete", Application.getString(814));
- private DialogButton enterRoom = new DialogButton("enterRoom", Application.getString(1282));
- private final CalendarPanel calendarPanel;
- private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
- final MessageDialog confirmDelete;
- private final WebMarkupContainer sipContainer = new WebMarkupContainer("sip-container");
- //FIXME TODO need to be unified with RoomInvitationForm
- private final RadioGroup<InviteeType> rdi = new RadioGroup<>("inviteeType", Model.of(InviteeType.user));
- private final Select2MultiChoice<Group> groups = new Select2MultiChoice<>("groups"
- , new CollectionModel<Group>(new ArrayList<>())
- , new GroupChoiceProvider());
- private final UserMultiChoice attendees = new UserMultiChoice("attendees", new CollectionModel<User>(new ArrayList<>()));
- private enum InviteeType {
- user
- , group
- }
-
- @Override
- public int getWidth() {
- return 650;
- }
-
- @Override
- public void onConfigure(JQueryBehavior behavior) {
- super.onConfigure(behavior);
- behavior.setOption("classes", "{'ui-dialog': 'ui-corner-all appointment'}");
- }
-
- public void setModelObjectWithAjaxTarget(Appointment a, AjaxRequestTarget target) {
- form.setModelObject(a);
- form.start.setModelObject(getDateTime(a.getStart()));
- form.end.setModelObject(getDateTime(a.getEnd()));
- form.setEnabled(isOwner(a));
- log.debug(" -- setModelObjectWithAjaxTarget -- Current model " + a);
- if (a.getId() != null) {
- delete.setVisible(isOwner(a), target);
- enterRoom.setVisible(a.getRoom() != null, target);
- } else {
- delete.setVisible(false, target);
- enterRoom.setVisible(false, target);
- }
- if (a.getRoom() != null) {
- target.add(sipContainer.replace(new Label("room.confno", a.getRoom().getConfno())).setVisible(a.getRoom().isSipEnabled()));
- }
- save.setVisible(isOwner(a), target);
- super.setModelObject(a);
- }
-
- public AppointmentDialog(String id, String title, CalendarPanel calendarPanel, CompoundPropertyModel<Appointment> model) {
- super(id, title, model, true);
- log.debug(" -- AppointmentDialog -- Current model " + getModel().getObject());
- this.calendarPanel = calendarPanel;
- setOutputMarkupId(true);
- form = new AppointmentForm("appForm", model);
- add(form);
- confirmDelete = new MessageDialog("confirmDelete", Application.getString(814), Application.getString(833), DialogButtons.OK_CANCEL, DialogIcon.WARN){
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
- if (button != null && button.match(AbstractDialog.OK)){
- deleteAppointment(handler);
- }
- }
- };
- add(confirmDelete);
- }
-
- protected void deleteAppointment(IPartialPageRequestHandler handler) {
- Appointment a = getModelObject();
- getBean(AppointmentDao.class).delete(a, getUserId());
- calendarPanel.refresh(handler);
- if (a.getCalendar() != null && a.getHref() != null) {
- calendarPanel.updatedeleteAppointment(handler, CalendarDialog.DIALOG_TYPE.DELETE_APPOINTMENT, a);
- }
- }
-
- @Override
- protected List<DialogButton> getButtons() {
- return Arrays.asList(enterRoom, save, delete, cancel);
- }
-
- @Override
- public DialogButton getSubmitButton() {
- return save;
- }
-
- @Override
- public Form<?> getForm() {
- return form;
- }
-
- @Override
- protected void onOpen(IPartialPageRequestHandler handler) {
- handler.add(form.add(new JQueryUIBehavior("#tabs", "tabs")));
- }
-
- @Override
- public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
- if (delete.equals(button)) {
- confirmDelete.open(handler);
- } else if (enterRoom.equals(button)) {
- RoomEnterBehavior.roomEnter((MainPage)getPage(), handler, getModelObject().getRoom().getId());
- }
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- target.add(feedback);
- }
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- Appointment a = form.getModelObject();
- a.setRoom(form.createRoom ? form.appRoom : form.groom.getModelObject());
- final List<MeetingMember> mms = a.getMeetingMembers() == null ? new ArrayList<>() : a.getMeetingMembers();
- Set<Long> currentIds = new HashSet<>();
- List<User> users = new ArrayList<>();
- if (InviteeType.group == rdi.getModelObject()) {
- //lets iterate through all group users
- for (Group g : groups.getModelObject()) {
- for (GroupUser gu : getBean(GroupUserDao.class).get(g.getId(), 0, Integer.MAX_VALUE)) {
- User u = gu.getUser();
- if (!currentIds.contains(u.getId())) {
- users.add(u);
- currentIds.add(u.getId());
- }
- }
- }
- } else {
- users = new ArrayList<>(attendees.getModelObject());
- for (User u : users) {
- if (u.getId() != null) {
- currentIds.add(u.getId());
- }
- }
- }
-
- //remove users
- for (Iterator<MeetingMember> i = mms.iterator(); i.hasNext();) {
- MeetingMember m = i.next();
- if (!currentIds.contains(m.getUser().getId())) {
- i.remove();
- }
- }
- Set<Long> originalIds = new HashSet<>();
- for (MeetingMember m : mms) {
- originalIds.add(m.getUser().getId());
- }
- //add users
- for (User u : users) {
- if (u.getId() == null || !originalIds.contains(u.getId())) {
- MeetingMember mm = new MeetingMember();
- mm.setUser(u);
- mm.setDeleted(false);
- mm.setInserted(a.getInserted());
- mm.setUpdated(a.getUpdated());
- mm.setAppointment(a);
- mms.add(mm);
- }
- }
- a.setMeetingMembers(mms);
- a.setStart(getDate(form.start.getModelObject()));
- a.setEnd(getDate(form.end.getModelObject()));
- a.setCalendar(form.cals.getModelObject());
- getBean(AppointmentDao.class).update(a, getUserId());
- if (a.getCalendar() != null) {
- calendarPanel.updatedeleteAppointment(target, CalendarDialog.DIALOG_TYPE.UPDATE_APPOINTMENT, a);
- }
- target.add(feedback);
- calendarPanel.refresh(target);
- }
-
- public static boolean isOwner(Appointment object) {
- return object.getOwner() != null && getUserId().equals(object.getOwner().getId());
- }
-
- private class AppointmentForm extends Form<Appointment> {
- private static final long serialVersionUID = 1L;
- private boolean createRoom = true;
- private Room appRoom = null;
- private final DateTimePicker start = new OmDateTimePicker("start", Model.of(LocalDateTime.now()));
- private final DateTimePicker end = new OmDateTimePicker("end", Model.of(LocalDateTime.now()));
- private final PasswordTextField pwd = new PasswordTextField("password");
- private final Label owner = new Label("aowner", Model.of(""));
- private final WebMarkupContainer ownerPanel = new WebMarkupContainer("owner-row");
- private final WebMarkupContainer createRoomBlock = new WebMarkupContainer("create-room-block", new CompoundPropertyModel<>(appRoom));
- private final DropDownChoice<Room.Type> roomType = new RoomTypeDropDown("type");
- private final DropDownChoice<Room> groom = new DropDownChoice<>(
- "groom"
- , Model.of(new Room())
- , getRoomList()
- , new ChoiceRenderer<Room>("name", "id"));
- private DropDownChoice<OmCalendar> cals = new DropDownChoice<>(
- "calendar",
- new LoadableDetachableModel<List<? extends OmCalendar>>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected List<? extends OmCalendar> load() {
- return getCalendarList();
- }
- },
- new ChoiceRenderer<OmCalendar>("title", "id")
- );
- private final WebMarkupContainer groupContainer = new WebMarkupContainer("groupContainer");
-
- private Room createAppRoom() {
- Room r = new Room();
- r.setAppointment(true);
- if (r.getType() == null) {
- r.setType(Room.Type.conference);
- }
- return r;
- }
-
- @Override
- protected void onModelChanged() {
- super.onModelChanged();
-
- Appointment a = getModelObject();
- if (a.getReminder() == null) {
- a.setReminder(Reminder.none);
- }
- if (a.getRoom() == null) {
- a.setRoom(createAppRoom());
- }
- createRoom = a.getRoom().isAppointment();
- if (createRoom) {
- appRoom = a.getRoom();
- } else {
- groom.setModelObject(a.getRoom());
- appRoom = createAppRoom();
- }
- createRoomBlock.setDefaultModelObject(appRoom);
- createRoomBlock.setEnabled(createRoom);
- groom.setEnabled(!createRoom);
- if (a.getId() == null) {
- java.util.Calendar start = WebSession.getCalendar();
- start.setTime(a.getStart());
- java.util.Calendar end = WebSession.getCalendar();
- end.setTime(a.getEnd());
-
- if (start.equals(end)) {
- end.add(java.util.Calendar.HOUR_OF_DAY, 1);
- a.setEnd(end.getTime());
- }
- cals.setEnabled(true);
- } else {
- cals.setEnabled(false);
- }
-
- rdi.setModelObject(InviteeType.user);
- attendees.setModelObject(new ArrayList<>());
- if (a.getMeetingMembers() != null) {
- for (MeetingMember mm : a.getMeetingMembers()) {
- attendees.getModelObject().add(mm.getUser());
- }
- }
- pwd.setEnabled(a.isPasswordProtected());
- owner.setDefaultModel(Model.of(FormatHelper.formatUser(a.getOwner())));
- ownerPanel.setVisible(!isOwner(a));
- }
-
- public AppointmentForm(String id, CompoundPropertyModel<Appointment> model) {
- super(id, model);
- setOutputMarkupId(true);
-
- add(feedback.setOutputMarkupId(true));
- //General
- add(new RequiredTextField<String>("title").setLabel(Model.of(Application.getString(572))));
- add(ownerPanel.add(owner));
- boolean showGroups = AuthLevelUtil.hasAdminLevel(getRights());
- add(rdi.add(new AjaxFormChoiceComponentUpdatingBehavior() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- boolean groupsEnabled = InviteeType.group == rdi.getModelObject();
- target.add(groups.setEnabled(groupsEnabled), attendees.setEnabled(!groupsEnabled));
- }
- }));
- groupContainer.add(
- groups.setLabel(Model.of(Application.getString(126))).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true)
- , new Radio<>("group", Model.of(InviteeType.group))
- );
- if (showGroups) {
- groups.add(new AjaxFormComponentUpdatingBehavior("change") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- // added to update model
- }
- }).setEnabled(false);
- }
- rdi.add(attendees.add(new AjaxFormComponentUpdatingBehavior("change") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- // added to update model
- }
- })
- , groupContainer.setVisible(showGroups)
- );
- rdi.add(new Radio<>("user", Model.of(InviteeType.user)));
-
- add(new TextField<String>("location"));
- DefaultWysiwygToolbar toolbar = new DefaultWysiwygToolbar("toolbarContainer");
- add(toolbar);
- add(new WysiwygEditor("description", toolbar));
-
- //room
- add(new AjaxCheckBox("createRoom", new PropertyModel<Boolean>(this, "createRoom")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- createRoom = getConvertedInput();
- target.add(createRoomBlock.setEnabled(createRoom), groom.setEnabled(!createRoom));
- }
- });
- add(createRoomBlock.add(roomType, new CheckBox("moderated")).setEnabled(createRoom).setOutputMarkupId(true));
- add(groom.setRequired(true).setLabel(Model.of(Application.getString(406))).setEnabled(!createRoom).setOutputMarkupId(true));
- add(sipContainer.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true));
- sipContainer.add(new Label("room.confno", "")).setVisible(false);
-
- //Advanced
- add(new DropDownChoice<>(
- "reminder"
- , Arrays.asList(Reminder.values())
- , new IChoiceRenderer<Reminder>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public Object getDisplayValue(Reminder art) {
- return getString("appointment.reminder." + art.name());
- }
-
- @Override
- public String getIdValue(Reminder art, int index) {
- return art.name();
- }
-
- @Override
- public Reminder getObject(String id, IModel<? extends List<? extends Reminder>> choices) {
- for (Reminder art : choices.getObject()) {
- if (art.name().equals(id)) {
- return art;
- }
- }
- return null;
- }
- }));
- add(new AjaxCheckBox("passwordProtected") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- AppointmentForm.this.getModelObject().setPasswordProtected(getConvertedInput());
- pwd.setEnabled(AppointmentForm.this.getModelObject().isPasswordProtected());
- target.add(pwd);
- }
- });
- pwd.setEnabled(getModelObject().isPasswordProtected());
- pwd.setOutputMarkupId(true);
- add(pwd);
- add(cals.setNullValid(true).setLabel(Model.of("calendar")).setOutputMarkupId(true));
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- add(start.setLabel(Model.of(getString("570"))).setRequired(true)
- , end.setLabel(Model.of(getString("571"))).setRequired(true));
- }
-
- private List<Room> getRoomList() {
- //FIXME need to be reviewed
- List<Room> result = new ArrayList<>();
- RoomDao dao = getBean(RoomDao.class);
- result.addAll(dao.getPublicRooms());
- for (GroupUser ou : getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
- result.addAll(dao.getGroupRooms(ou.getGroup().getId()));
- }
- if (getModelObject().getRoom() != null && getModelObject().getRoom().isAppointment()) { //FIXME review
- result.add(getModelObject().getRoom());
- }
- return result;
- }
-
- private List<OmCalendar> getCalendarList(){
- return getBean(AppointmentManager.class).getCalendars(getUserId());
- }
-
- @Override
- protected void onValidate() {
- if (null != start.getConvertedInput() && null != end.getConvertedInput() && end.getConvertedInput().isBefore(start.getConvertedInput())) {
- error(Application.getString(1592));
- }
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.calendar;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.user.GroupUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.calendar.OmCalendar;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.db.util.FormatHelper;
+import org.apache.openmeetings.service.calendar.caldav.AppointmentManager;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.GroupChoiceProvider;
+import org.apache.openmeetings.web.common.OmDateTimePicker;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
+import org.apache.openmeetings.web.util.RoomTypeDropDown;
+import org.apache.openmeetings.web.util.UserMultiChoice;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.Radio;
+import org.apache.wicket.markup.html.form.RadioGroup;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.util.CollectionModel;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.wicketstuff.select2.Select2MultiChoice;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.JQueryUIBehavior;
+import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
+import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.toolbar.DefaultWysiwygToolbar;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+import com.googlecode.wicket.kendo.ui.form.datetime.local.DateTimePicker;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public class AppointmentDialog extends AbstractFormDialog<Appointment> {
+ private static final long serialVersionUID = 1L;
+ private static final Logger log = Red5LoggerFactory.getLogger(AppointmentDialog.class, webAppRootKey);
+
+ private AppointmentForm form;
+ private DialogButton save = new DialogButton("save", Application.getString(813));
+ private DialogButton cancel = new DialogButton("cancel", Application.getString(1130));
+ private DialogButton delete = new DialogButton("delete", Application.getString(814));
+ private DialogButton enterRoom = new DialogButton("enterRoom", Application.getString(1282));
+ private final CalendarPanel calendarPanel;
+ private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+ final MessageDialog confirmDelete;
+ private final WebMarkupContainer sipContainer = new WebMarkupContainer("sip-container");
+ //FIXME TODO need to be unified with RoomInvitationForm
+ private final RadioGroup<InviteeType> rdi = new RadioGroup<>("inviteeType", Model.of(InviteeType.user));
+ private final Select2MultiChoice<Group> groups = new Select2MultiChoice<>("groups"
+ , new CollectionModel<Group>(new ArrayList<>())
+ , new GroupChoiceProvider());
+ private final UserMultiChoice attendees = new UserMultiChoice("attendees", new CollectionModel<User>(new ArrayList<>()));
+ private enum InviteeType {
+ user
+ , group
+ }
+
+ @Override
+ public int getWidth() {
+ return 650;
+ }
+
+ @Override
+ public void onConfigure(JQueryBehavior behavior) {
+ super.onConfigure(behavior);
+ behavior.setOption("classes", "{'ui-dialog': 'ui-corner-all appointment'}");
+ }
+
+ public void setModelObjectWithAjaxTarget(Appointment a, AjaxRequestTarget target) {
+ form.setModelObject(a);
+ form.start.setModelObject(getDateTime(a.getStart()));
+ form.end.setModelObject(getDateTime(a.getEnd()));
+ form.setEnabled(isOwner(a));
+ log.debug(" -- setModelObjectWithAjaxTarget -- Current model " + a);
+ if (a.getId() != null) {
+ delete.setVisible(isOwner(a), target);
+ enterRoom.setVisible(a.getRoom() != null, target);
+ } else {
+ delete.setVisible(false, target);
+ enterRoom.setVisible(false, target);
+ }
+ if (a.getRoom() != null) {
+ target.add(sipContainer.replace(new Label("room.confno", a.getRoom().getConfno())).setVisible(a.getRoom().isSipEnabled()));
+ }
+ save.setVisible(isOwner(a), target);
+ super.setModelObject(a);
+ }
+
+ public AppointmentDialog(String id, String title, CalendarPanel calendarPanel, CompoundPropertyModel<Appointment> model) {
+ super(id, title, model, true);
+ log.debug(" -- AppointmentDialog -- Current model " + getModel().getObject());
+ this.calendarPanel = calendarPanel;
+ setOutputMarkupId(true);
+ form = new AppointmentForm("appForm", model);
+ add(form);
+ confirmDelete = new MessageDialog("confirmDelete", Application.getString(814), Application.getString(833), DialogButtons.OK_CANCEL, DialogIcon.WARN){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+ if (button != null && button.match(AbstractDialog.OK)){
+ deleteAppointment(handler);
+ }
+ }
+ };
+ add(confirmDelete);
+ }
+
+ protected void deleteAppointment(IPartialPageRequestHandler handler) {
+ Appointment a = getModelObject();
+ getBean(AppointmentDao.class).delete(a, getUserId());
+ calendarPanel.refresh(handler);
+ if (a.getCalendar() != null && a.getHref() != null) {
+ calendarPanel.updatedeleteAppointment(handler, CalendarDialog.DIALOG_TYPE.DELETE_APPOINTMENT, a);
+ }
+ }
+
+ @Override
+ protected List<DialogButton> getButtons() {
+ return Arrays.asList(enterRoom, save, delete, cancel);
+ }
+
+ @Override
+ public DialogButton getSubmitButton() {
+ return save;
+ }
+
+ @Override
+ public Form<?> getForm() {
+ return form;
+ }
+
+ @Override
+ protected void onOpen(IPartialPageRequestHandler handler) {
+ handler.add(form.add(new JQueryUIBehavior("#tabs", "tabs")));
+ }
+
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+ if (delete.equals(button)) {
+ confirmDelete.open(handler);
+ } else if (enterRoom.equals(button)) {
+ RoomEnterBehavior.roomEnter((MainPage)getPage(), handler, getModelObject().getRoom().getId());
+ }
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ target.add(feedback);
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ Appointment a = form.getModelObject();
+ a.setRoom(form.createRoom ? form.appRoom : form.groom.getModelObject());
+ final List<MeetingMember> mms = a.getMeetingMembers() == null ? new ArrayList<>() : a.getMeetingMembers();
+ Set<Long> currentIds = new HashSet<>();
+ List<User> users = new ArrayList<>();
+ if (InviteeType.group == rdi.getModelObject()) {
+ //lets iterate through all group users
+ for (Group g : groups.getModelObject()) {
+ for (GroupUser gu : getBean(GroupUserDao.class).get(g.getId(), 0, Integer.MAX_VALUE)) {
+ User u = gu.getUser();
+ if (!currentIds.contains(u.getId())) {
+ users.add(u);
+ currentIds.add(u.getId());
+ }
+ }
+ }
+ } else {
+ users = new ArrayList<>(attendees.getModelObject());
+ for (User u : users) {
+ if (u.getId() != null) {
+ currentIds.add(u.getId());
+ }
+ }
+ }
+
+ //remove users
+ for (Iterator<MeetingMember> i = mms.iterator(); i.hasNext();) {
+ MeetingMember m = i.next();
+ if (!currentIds.contains(m.getUser().getId())) {
+ i.remove();
+ }
+ }
+ Set<Long> originalIds = new HashSet<>();
+ for (MeetingMember m : mms) {
+ originalIds.add(m.getUser().getId());
+ }
+ //add users
+ for (User u : users) {
+ if (u.getId() == null || !originalIds.contains(u.getId())) {
+ MeetingMember mm = new MeetingMember();
+ mm.setUser(u);
+ mm.setDeleted(false);
+ mm.setInserted(a.getInserted());
+ mm.setUpdated(a.getUpdated());
+ mm.setAppointment(a);
+ mms.add(mm);
+ }
+ }
+ a.setMeetingMembers(mms);
+ a.setStart(getDate(form.start.getModelObject()));
+ a.setEnd(getDate(form.end.getModelObject()));
+ a.setCalendar(form.cals.getModelObject());
+ getBean(AppointmentDao.class).update(a, getUserId());
+ if (a.getCalendar() != null) {
+ calendarPanel.updatedeleteAppointment(target, CalendarDialog.DIALOG_TYPE.UPDATE_APPOINTMENT, a);
+ }
+ target.add(feedback);
+ calendarPanel.refresh(target);
+ }
+
+ public static boolean isOwner(Appointment object) {
+ return object.getOwner() != null && getUserId().equals(object.getOwner().getId());
+ }
+
+ private class AppointmentForm extends Form<Appointment> {
+ private static final long serialVersionUID = 1L;
+ private boolean createRoom = true;
+ private Room appRoom = null;
+ private final DateTimePicker start = new OmDateTimePicker("start", Model.of(LocalDateTime.now()));
+ private final DateTimePicker end = new OmDateTimePicker("end", Model.of(LocalDateTime.now()));
+ private final PasswordTextField pwd = new PasswordTextField("password");
+ private final Label owner = new Label("aowner", Model.of(""));
+ private final WebMarkupContainer ownerPanel = new WebMarkupContainer("owner-row");
+ private final WebMarkupContainer createRoomBlock = new WebMarkupContainer("create-room-block", new CompoundPropertyModel<>(appRoom));
+ private final DropDownChoice<Room.Type> roomType = new RoomTypeDropDown("type");
+ private final DropDownChoice<Room> groom = new DropDownChoice<>(
+ "groom"
+ , Model.of(new Room())
+ , getRoomList()
+ , new ChoiceRenderer<Room>("name", "id"));
+ private DropDownChoice<OmCalendar> cals = new DropDownChoice<>(
+ "calendar",
+ new LoadableDetachableModel<List<? extends OmCalendar>>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected List<? extends OmCalendar> load() {
+ return getCalendarList();
+ }
+ },
+ new ChoiceRenderer<OmCalendar>("title", "id")
+ );
+ private final WebMarkupContainer groupContainer = new WebMarkupContainer("groupContainer");
+
+ private Room createAppRoom() {
+ Room r = new Room();
+ r.setAppointment(true);
+ if (r.getType() == null) {
+ r.setType(Room.Type.conference);
+ }
+ return r;
+ }
+
+ @Override
+ protected void onModelChanged() {
+ super.onModelChanged();
+
+ Appointment a = getModelObject();
+ if (a.getReminder() == null) {
+ a.setReminder(Reminder.none);
+ }
+ if (a.getRoom() == null) {
+ a.setRoom(createAppRoom());
+ }
+ createRoom = a.getRoom().isAppointment();
+ if (createRoom) {
+ appRoom = a.getRoom();
+ } else {
+ groom.setModelObject(a.getRoom());
+ appRoom = createAppRoom();
+ }
+ createRoomBlock.setDefaultModelObject(appRoom);
+ createRoomBlock.setEnabled(createRoom);
+ groom.setEnabled(!createRoom);
+ if (a.getId() == null) {
+ java.util.Calendar start = WebSession.getCalendar();
+ start.setTime(a.getStart());
+ java.util.Calendar end = WebSession.getCalendar();
+ end.setTime(a.getEnd());
+
+ if (start.equals(end)) {
+ end.add(java.util.Calendar.HOUR_OF_DAY, 1);
+ a.setEnd(end.getTime());
+ }
+ cals.setEnabled(true);
+ } else {
+ cals.setEnabled(false);
+ }
+
+ rdi.setModelObject(InviteeType.user);
+ attendees.setModelObject(new ArrayList<>());
+ if (a.getMeetingMembers() != null) {
+ for (MeetingMember mm : a.getMeetingMembers()) {
+ attendees.getModelObject().add(mm.getUser());
+ }
+ }
+ pwd.setEnabled(a.isPasswordProtected());
+ owner.setDefaultModel(Model.of(FormatHelper.formatUser(a.getOwner())));
+ ownerPanel.setVisible(!isOwner(a));
+ }
+
+ public AppointmentForm(String id, CompoundPropertyModel<Appointment> model) {
+ super(id, model);
+ setOutputMarkupId(true);
+
+ add(feedback.setOutputMarkupId(true));
+ //General
+ add(new RequiredTextField<String>("title").setLabel(Model.of(Application.getString(572))));
+ add(ownerPanel.add(owner));
+ boolean showGroups = AuthLevelUtil.hasAdminLevel(getRights());
+ add(rdi.add(new AjaxFormChoiceComponentUpdatingBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ boolean groupsEnabled = InviteeType.group == rdi.getModelObject();
+ target.add(groups.setEnabled(groupsEnabled), attendees.setEnabled(!groupsEnabled));
+ }
+ }));
+ groupContainer.add(
+ groups.setLabel(Model.of(Application.getString(126))).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true)
+ , new Radio<>("group", Model.of(InviteeType.group))
+ );
+ if (showGroups) {
+ groups.add(new AjaxFormComponentUpdatingBehavior("change") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ // added to update model
+ }
+ }).setEnabled(false);
+ }
+ rdi.add(attendees.add(new AjaxFormComponentUpdatingBehavior("change") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ // added to update model
+ }
+ })
+ , groupContainer.setVisible(showGroups)
+ );
+ rdi.add(new Radio<>("user", Model.of(InviteeType.user)));
+
+ add(new TextField<String>("location"));
+ DefaultWysiwygToolbar toolbar = new DefaultWysiwygToolbar("toolbarContainer");
+ add(toolbar);
+ add(new WysiwygEditor("description", toolbar));
+
+ //room
+ add(new AjaxCheckBox("createRoom", new PropertyModel<Boolean>(this, "createRoom")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ createRoom = getConvertedInput();
+ target.add(createRoomBlock.setEnabled(createRoom), groom.setEnabled(!createRoom));
+ }
+ });
+ add(createRoomBlock.add(roomType, new CheckBox("moderated")).setEnabled(createRoom).setOutputMarkupId(true));
+ add(groom.setRequired(true).setLabel(Model.of(Application.getString(406))).setEnabled(!createRoom).setOutputMarkupId(true));
+ add(sipContainer.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true));
+ sipContainer.add(new Label("room.confno", "")).setVisible(false);
+
+ //Advanced
+ add(new DropDownChoice<>(
+ "reminder"
+ , Arrays.asList(Reminder.values())
+ , new IChoiceRenderer<Reminder>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Object getDisplayValue(Reminder art) {
+ return getString("appointment.reminder." + art.name());
+ }
+
+ @Override
+ public String getIdValue(Reminder art, int index) {
+ return art.name();
+ }
+
+ @Override
+ public Reminder getObject(String id, IModel<? extends List<? extends Reminder>> choices) {
+ for (Reminder art : choices.getObject()) {
+ if (art.name().equals(id)) {
+ return art;
+ }
+ }
+ return null;
+ }
+ }));
+ add(new AjaxCheckBox("passwordProtected") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ AppointmentForm.this.getModelObject().setPasswordProtected(getConvertedInput());
+ pwd.setEnabled(AppointmentForm.this.getModelObject().isPasswordProtected());
+ target.add(pwd);
+ }
+ });
+ pwd.setEnabled(getModelObject().isPasswordProtected());
+ pwd.setOutputMarkupId(true);
+ add(pwd);
+ add(cals.setNullValid(true).setLabel(Model.of("calendar")).setOutputMarkupId(true));
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ add(start.setLabel(Model.of(getString("570"))).setRequired(true)
+ , end.setLabel(Model.of(getString("571"))).setRequired(true));
+ }
+
+ private List<Room> getRoomList() {
+ //FIXME need to be reviewed
+ List<Room> result = new ArrayList<>();
+ RoomDao dao = getBean(RoomDao.class);
+ result.addAll(dao.getPublicRooms());
+ for (GroupUser ou : getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
+ result.addAll(dao.getGroupRooms(ou.getGroup().getId()));
+ }
+ if (getModelObject().getRoom() != null && getModelObject().getRoom().isAppointment()) { //FIXME review
+ result.add(getModelObject().getRoom());
+ }
+ return result;
+ }
+
+ private List<OmCalendar> getCalendarList(){
+ return getBean(AppointmentManager.class).getCalendars(getUserId());
+ }
+
+ @Override
+ protected void onValidate() {
+ if (null != start.getConvertedInput() && null != end.getConvertedInput() && end.getConvertedInput().isBefore(start.getConvertedInput())) {
+ error(Application.getString(1592));
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
index 3e5cc63..5819d24 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
@@ -1,51 +1,51 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.user.calendar;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.entity.calendar.Appointment;
-
-import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
-import com.googlecode.wicket.jquery.ui.calendar.CalendarModel;
-import com.googlecode.wicket.jquery.ui.calendar.ICalendarVisitor;
-
-public class AppointmentModel extends CalendarModel implements ICalendarVisitor {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void visit(CalendarEvent event) {
- //every event can be customized
- }
-
- @Override
- protected List<? extends CalendarEvent> load() {
- List<CalendarEvent> list = new ArrayList<>();
- for (Appointment a : getBean(AppointmentDao.class).getInRange(getUserId(), getDate(getStart()), getDate(getEnd()))) {
- list.add(new OmCalendarEvent(a));
- }
- return list;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.user.calendar;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+
+import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
+import com.googlecode.wicket.jquery.ui.calendar.CalendarModel;
+import com.googlecode.wicket.jquery.ui.calendar.ICalendarVisitor;
+
+public class AppointmentModel extends CalendarModel implements ICalendarVisitor {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void visit(CalendarEvent event) {
+ //every event can be customized
+ }
+
+ @Override
+ protected List<? extends CalendarEvent> load() {
+ List<CalendarEvent> list = new ArrayList<>();
+ for (Appointment a : getBean(AppointmentDao.class).getInRange(getUserId(), getDate(getStart()), getDate(getEnd()))) {
+ list.add(new OmCalendarEvent(a));
+ }
+ return list;
+ }
+}
[26/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
Normalize all the line endings
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/1cb3518f
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/1cb3518f
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/1cb3518f
Branch: refs/heads/3.3.x
Commit: 1cb3518f0d7622145f37ecb62d14f56e7126cc3d
Parents: 11e8d9d
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Thu May 18 12:35:51 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Thu May 18 12:35:51 2017 +0700
----------------------------------------------------------------------
NOTICE | 28 +-
README | 248 +--
.../record/listener/async/BaseStreamWriter.java | 400 ++---
.../data/record/listener/async/CachedEvent.java | 152 +-
.../listener/async/StreamAudioWriter.java | 456 ++---
.../listener/async/StreamVideoWriter.java | 196 +--
.../openmeetings/core/mail/SMSHandler.java | 236 +--
.../core/session/SessionManager.java | 730 ++++----
openmeetings-core/src/site/site.xml | 80 +-
.../test/rtmp/LoadTestRtmpClient.java | 344 ++--
.../openmeetings/test/rtmp/SimulateLoad.java | 184 +-
.../openmeetings/db/dao/IDataProviderDao.java | 188 +-
.../db/dao/basic/MailMessageDao.java | 270 +--
.../openmeetings/db/dao/label/LabelDao.java | 642 +++----
.../apache/openmeetings/db/dao/room/SipDao.java | 382 ++--
.../db/dao/server/ISessionManager.java | 412 ++---
.../openmeetings/db/dao/server/ServerDao.java | 444 ++---
.../openmeetings/db/dao/user/GroupDao.java | 292 ++--
.../openmeetings/db/dao/user/GroupUserDao.java | 248 +--
.../db/entity/basic/MailMessage.java | 398 ++---
.../openmeetings/db/entity/server/Server.java | 608 +++----
.../openmeetings/db/util/FormatHelper.java | 162 +-
openmeetings-db/src/site/site.xml | 80 +-
.../src/main/swf/base/components/miniIcons.lzx | 132 +-
.../main/swf/base/components/miniIconsNew.lzx | 92 +-
.../src/main/swf/base/components/omImage.lzx | 104 +-
.../src/main/swf/base/components/omMiniIcon.lzx | 74 +-
.../swf/base/components/scrollbars/library.lzx | 88 +-
.../scrollbars/scrollbar_yresources.lzx | 48 +-
.../main/swf/base/remote/baseVideoStream.lzx | 770 ++++-----
.../swf/base/remote/baseVideoStreamDevice.lzx | 344 ++--
.../src/main/swf/base/remote/baseVideoView.lzx | 208 +--
.../main/swf/commonVideoViewContentSWF10.lzx | 1630 +++++++++---------
openmeetings-flash/src/main/swf/dragHelper.lzx | 82 +-
.../src/main/swf/lzrecorder/library.lzx | 50 +-
.../main/swf/lzrecorder/playBackVideoStream.lzx | 140 +-
.../whiteboard/base/whiteBoardPointer.lzx | 74 +-
.../propertypanel/drawDocumentPanelItem.lzx | 80 +-
.../main/swf/networkTesting/networktesting.lzx | 294 ++--
.../networkTesting/tests/BaseURLLoadTest.lzx | 292 ++--
.../networkTesting/tests/DownloadSpeedTest.lzx | 100 +-
.../swf/networkTesting/tests/JitterTest.lzx | 114 +-
.../swf/networkTesting/tests/NetworkTest.lzx | 256 +--
.../main/swf/networkTesting/tests/PingTest.lzx | 86 +-
.../tests/PortAvailabilityTest.lzx | 180 +-
.../networkTesting/tests/UploadSpeedTest.lzx | 248 +--
.../main/swf/networkTesting/tests/library.lzx | 74 +-
.../src/main/swf/networkTesting/testsView.lzx | 210 +--
.../src/main/swf/video/baseVideoObject.lzx | 1442 ++++++++--------
.../main/swf/video/editRecordStreamSWF10.lzx | 998 +++++------
.../src/main/swf/video/library.lzx | 140 +-
.../main/swf/video/videoObjectPlayBroadcast.lzx | 162 +-
.../swf/video/videoObjectPlayTestBroadcast.lzx | 82 +-
.../main/swf/video/videoObjectTestBroadcast.lzx | 110 +-
.../main/swf/video/videoUserProfilePicSWF10.lzx | 72 +-
.../src/main/swf/video/volumeSlider.lzx | 136 +-
openmeetings-flash/src/site/site.xml | 78 +-
.../backup/AppointmentConverter.java | 108 +-
.../AppointmentReminderTypeConverter.java | 78 +-
.../openmeetings/backup/DateConverter.java | 80 +-
.../openmeetings/backup/GroupConverter.java | 108 +-
.../openmeetings/backup/InlineConverter.java | 58 +-
.../openmeetings/backup/IntegerTransform.java | 68 +-
.../openmeetings/backup/LongTransform.java | 66 +-
.../backup/OmCalendarConverter.java | 110 +-
.../apache/openmeetings/backup/OmConverter.java | 112 +-
.../openmeetings/backup/PollTypeConverter.java | 74 +-
.../backup/RecordingStatusConverter.java | 94 +-
.../openmeetings/backup/RoomConverter.java | 108 +-
.../openmeetings/backup/RoomTypeConverter.java | 74 +-
.../backup/SalutationConverter.java | 70 +-
.../openmeetings/backup/UserConverter.java | 108 +-
.../cli/ConnectionPropertiesPatcher.java | 378 ++--
.../org/apache/openmeetings/cli/Db2Patcher.java | 56 +-
.../apache/openmeetings/cli/DerbyPatcher.java | 66 +-
.../apache/openmeetings/cli/MssqlPatcher.java | 56 +-
.../apache/openmeetings/cli/MysqlPatcher.java | 58 +-
.../apache/openmeetings/cli/OraclePatcher.java | 64 +-
.../openmeetings/cli/PostgresPatcher.java | 56 +-
.../installation/InstallationConfig.java | 200 +--
openmeetings-install/src/site/site.xml | 78 +-
.../openmeetings/screenshare/CaptureScreen.java | 474 ++---
.../screenshare/IScreenEncoder.java | 66 +-
.../screenshare/RTMPClientPublish.java | 204 +--
.../screenshare/ScreenV1Encoder.java | 404 ++---
.../screenshare/gui/MouseListenerable.java | 62 +-
.../screenshare/gui/NumberSpinner.java | 70 +-
.../src/main/resources/logback.xsd | 218 +--
openmeetings-screenshare/src/site/site.xml | 78 +-
.../src/main/assembly/jrebel/red5-debug.bat | 38 +-
.../src/main/assembly/scripts/admin.bat | 42 +-
openmeetings-server/src/site/site.xml | 280 +--
.../src/site/stylesheets/errortable.xsl | 134 +-
.../src/site/xdoc/ApacheDerbyConfig.xml | 114 +-
.../src/site/xdoc/BitrixPlugin.xml | 96 +-
.../src/site/xdoc/BuildInstructions.xml | 208 +--
.../src/site/xdoc/BuildInstructions_3.0.x.xml | 608 +++----
.../src/site/xdoc/CalendarAndTimezone.xml | 134 +-
.../src/site/xdoc/CallForLogo.xml | 486 +++---
.../src/site/xdoc/Clustering.xml | 278 +--
.../src/site/xdoc/CommandLineAdmin.xml | 200 +--
.../site/xdoc/ConferenceRoomLayoutOptions.xml | 174 +-
.../src/site/xdoc/ConfluencePlugin.xml | 98 +-
.../src/site/xdoc/CustomCryptMechanism.xml | 206 +--
.../src/site/xdoc/CustomRoomTypeHowTo.xml | 206 +--
openmeetings-server/src/site/xdoc/Dashboard.xml | 138 +-
.../src/site/xdoc/DrupalPlugin.xml | 150 +-
.../src/site/xdoc/EditTemplates.xml | 128 +-
.../src/site/xdoc/GeneralConfiguration.xml | 626 +++----
.../src/site/xdoc/GetVersionInfo.xml | 144 +-
openmeetings-server/src/site/xdoc/HotKeys.xml | 106 +-
.../src/site/xdoc/IBMDB2Config.xml | 146 +-
.../src/site/xdoc/Internationalisation.xml | 96 +-
.../src/site/xdoc/JUnitTesting.xml | 170 +-
.../src/site/xdoc/JVMPerformanceTuning.xml | 132 +-
.../src/site/xdoc/JiraPlugin.xml | 102 +-
.../src/site/xdoc/JoomlaPlugin.xml | 118 +-
.../src/site/xdoc/LanguageEditor.xml | 116 +-
.../src/site/xdoc/LdapAndADS.xml | 190 +-
.../src/site/xdoc/MSSQLConfig.xml | 152 +-
.../src/site/xdoc/ManualTesting.xml | 1002 +++++------
.../src/site/xdoc/MoodlePlugin.xml | 152 +-
.../src/site/xdoc/MySQLConfig.xml | 152 +-
.../src/site/xdoc/Navigation.xml | 86 +-
.../src/site/xdoc/OpenOfficeConverter.xml | 108 +-
.../src/site/xdoc/OracleConfig.xml | 122 +-
.../src/site/xdoc/PortSettings.xml | 172 +-
.../src/site/xdoc/PostgresConfig.xml | 144 +-
.../src/site/xdoc/RTMPSAndHTTPS.xml | 434 ++---
.../src/site/xdoc/RecommendedHardwareList.xml | 118 +-
.../src/site/xdoc/RedminePlugin.xml | 68 +-
.../src/site/xdoc/ReleaseGuide.xml | 628 +++----
.../src/site/xdoc/RestAPISample.xml | 278 +--
.../src/site/xdoc/RestrictedAccess.xml | 144 +-
.../src/site/xdoc/SakaiPlugin.xml | 220 +--
.../src/site/xdoc/SugarCRMPlugin.xml | 146 +-
.../src/site/xdoc/TimeZoneHandling.xml | 78 +-
openmeetings-server/src/site/xdoc/Upgrade.xml | 192 +--
.../src/site/xdoc/WebappNamePath.xml | 302 ++--
.../src/site/xdoc/WebcamResolutions.xml | 118 +-
.../src/site/xdoc/WebsiteGuide.xml | 160 +-
.../src/site/xdoc/commercial-support.xml | 112 +-
.../src/site/xdoc/installation.xml | 568 +++---
.../src/site/xdoc/red5sip-integration_2.0.xml | 356 ++--
.../src/site/xdoc/themes-and-branding.xml | 122 +-
.../src/site/xdoc/voip-sip-integration.xml | 136 +-
.../service/quartz/scheduler/CleanupJob.java | 358 ++--
openmeetings-service/src/site/site.xml | 80 +-
.../openmeetings/util/ConnectionProperties.java | 172 +-
.../org/apache/openmeetings/util/DaoHelper.java | 214 +--
.../apache/openmeetings/util/OmFileHelper.java | 630 +++----
.../org/apache/openmeetings/util/Version.java | 196 +--
.../apache/openmeetings/util/mail/MailUtil.java | 68 +-
.../util/process/ProcessHelper.java | 232 +--
openmeetings-util/src/site/site.xml | 80 +-
.../openmeetings/web/admin/AdminBaseForm.java | 362 ++--
.../web/admin/SearchableDataView.java | 90 +-
.../web/admin/backup/BackupPanel.java | 484 +++---
.../web/admin/configurations/ConfigForm.java | 286 +--
.../web/admin/configurations/ConfigsPanel.java | 188 +-
.../web/admin/groups/GroupForm.java | 500 +++---
.../web/admin/groups/GroupUsersPanel.html | 90 +-
.../web/admin/groups/GroupUsersPanel.java | 318 ++--
.../web/admin/groups/GroupsPanel.java | 198 +--
.../web/admin/labels/AddLanguageDialog.java | 230 +--
.../web/admin/labels/LabelsForm.java | 224 +--
.../openmeetings/web/admin/labels/LangForm.java | 206 +--
.../openmeetings/web/admin/ldaps/LdapForm.java | 260 +--
.../web/admin/ldaps/LdapsPanel.java | 186 +-
.../openmeetings/web/admin/rooms/RoomForm.java | 824 ++++-----
.../web/admin/rooms/RoomsPanel.java | 182 +-
.../web/admin/servers/ServerForm.java | 280 +--
.../web/admin/servers/ServersPanel.java | 190 +-
.../openmeetings/web/admin/users/UserForm.java | 628 +++----
.../web/app/LabelResourceLoader.java | 130 +-
.../web/common/ConfirmableAjaxBorder.java | 354 ++--
.../openmeetings/web/common/HeaderPanel.html | 52 +-
.../openmeetings/web/common/HeaderPanel.java | 64 +-
.../web/common/OmPagingNavigator.html | 54 +-
.../web/common/OmPagingNavigator.java | 64 +-
.../openmeetings/web/common/menu/MenuPanel.html | 50 +-
.../openmeetings/web/common/menu/MenuPanel.java | 138 +-
.../web/data/DataViewContainer.java | 106 +-
.../openmeetings/web/data/OmOrderByBorder.java | 90 +-
.../web/data/SearchableDataProvider.java | 184 +-
.../openmeetings/web/pages/ActivatePage.java | 102 +-
.../openmeetings/web/pages/NotInitedPage.html | 64 +-
.../openmeetings/web/pages/NotInitedPage.java | 80 +-
.../openmeetings/web/pages/ResetPage.html | 50 +-
.../openmeetings/web/pages/ResetPage.java | 88 +-
.../web/pages/auth/KickMessageDialog.html | 56 +-
.../web/pages/auth/KickMessageDialog.java | 116 +-
.../web/pages/auth/ResetPasswordDialog.html | 84 +-
.../web/pages/auth/ResetPasswordDialog.java | 314 ++--
.../openmeetings/web/user/AboutDialog.html | 84 +-
.../openmeetings/web/user/AboutDialog.java | 114 +-
.../openmeetings/web/user/UserInfoDialog.html | 54 +-
.../openmeetings/web/user/UserInfoDialog.java | 166 +-
.../web/user/calendar/AppointmentDialog.html | 242 +--
.../web/user/calendar/AppointmentDialog.java | 1020 +++++------
.../web/user/calendar/AppointmentModel.java | 102 +-
.../web/user/dashboard/MyRoomsWidget.java | 98 +-
.../user/dashboard/MyRoomsWidgetDescriptor.java | 102 +-
.../web/user/dashboard/MyRoomsWidgetView.html | 50 +-
.../web/user/dashboard/MyRoomsWidgetView.java | 72 +-
.../web/user/dashboard/OmDashboardPanel.html | 50 +-
.../web/user/dashboard/OmDashboardPanel.java | 72 +-
.../web/user/dashboard/RecentRoomsWidget.java | 98 +-
.../dashboard/RecentRoomsWidgetDescriptor.java | 102 +-
.../user/dashboard/RecentRoomsWidgetView.html | 50 +-
.../user/dashboard/RecentRoomsWidgetView.java | 76 +-
.../web/user/dashboard/RssWidget.java | 98 +-
.../web/user/dashboard/RssWidgetDescriptor.java | 102 +-
.../web/user/dashboard/RssWidgetView.java | 194 +--
.../web/user/dashboard/StartWidget.java | 96 +-
.../user/dashboard/StartWidgetDescriptor.java | 102 +-
.../web/user/dashboard/StartWidgetView.html | 76 +-
.../web/user/dashboard/StartWidgetView.java | 138 +-
.../web/user/dashboard/WelcomeWidget.java | 96 +-
.../user/dashboard/WelcomeWidgetDescriptor.java | 102 +-
.../web/user/dashboard/WelcomeWidgetView.html | 86 +-
.../web/user/dashboard/WelcomeWidgetView.java | 162 +-
.../web/user/dashboard/admin/AdminWidget.java | 98 +-
.../dashboard/admin/AdminWidgetDescriptor.java | 102 +-
.../user/dashboard/admin/AdminWidgetView.html | 58 +-
.../user/dashboard/admin/AdminWidgetView.java | 108 +-
.../web/user/profile/UserProfilePanel.html | 174 +-
.../web/user/profile/UserProfilePanel.java | 146 +-
.../web/user/profile/UserSearchPanel.html | 136 +-
.../web/user/profile/UserSearchPanel.java | 308 ++--
.../openmeetings/web/user/rooms/RoomsPanel.html | 124 +-
.../openmeetings/web/user/rooms/RoomsPanel.java | 274 +--
.../web/user/rooms/RoomsSelectorPanel.html | 54 +-
.../web/user/rooms/RoomsSelectorPanel.java | 112 +-
.../web/user/rooms/RoomsTabbedPanel.html | 60 +-
.../web/user/rooms/RoomsTabbedPanel.java | 140 +-
.../openmeetings/web/util/AjaxDownload.java | 256 +--
.../src/main/webapp/conf/om_ldap.cfg | 218 +--
.../main/webapp/js/openmeetings_functions.js | 128 +-
.../src/main/webapp/languages/errorvalues.xsd | 82 +-
.../src/main/webapp/public/config.xsd | 262 +--
.../src/main/webapp/public/theme.xml | 660 +++----
.../src/main/webapp/public/theme.xsd | 90 +-
.../src/main/webapp/upload/library.xsd | 136 +-
openmeetings-web/src/site/site.xml | 78 +-
.../openmeetings/test/AbstractWicketTester.java | 154 +-
.../test/backup/TestOldBackups.java | 256 +--
.../openmeetings/test/user/TestUserContact.java | 210 +--
.../openmeetings/test/user/TestUserCount.java | 116 +-
.../webservice/ServerWebService.java | 360 ++--
.../cluster/SlaveHTTPConnectionManager.java | 198 +--
openmeetings-webservice/src/site/site.xml | 80 +-
src/site/site.xml | 154 +-
253 files changed, 25570 insertions(+), 25570 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index 6685a3f..eddf910 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,14 +1,14 @@
-Apache OpenMeetings
-Copyright 2011-2017 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes icons from FamFamFam Icon Set Silk.
-http://www.famfamfam.com/lab/icons/silk/
-
-This product includes icons from Yusuke Kamiyamane.
-http://p.yusukekamiyamane.com/
-
-This product includes free icons from FatCow.
-http://www.fatcow.com/free-icons
+Apache OpenMeetings
+Copyright 2011-2017 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+This product includes icons from FamFamFam Icon Set Silk.
+http://www.famfamfam.com/lab/icons/silk/
+
+This product includes icons from Yusuke Kamiyamane.
+http://p.yusukekamiyamane.com/
+
+This product includes free icons from FatCow.
+http://www.fatcow.com/free-icons
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/README
----------------------------------------------------------------------
diff --git a/README b/README
index 6747d28..fb4c599 100644
--- a/README
+++ b/README
@@ -1,124 +1,124 @@
-Apache OpenMeetings - README
-Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
---------------------------------------------------------------------------------
-
-About
-=====
-Apache OpenMeetings provides video conferencing, instant messaging, white board,
-collaborative document editing and other groupware tools using API functions of
-the Red5 Streaming Server for Remoting and Streaming.
-
-Release Notes 3.2.1
-=============
-see CHANGELOG file for detailed log
-
-Service release 1 for 3.2.0, provides following improvements:
-
-Room
-* Video is more stable
-* Office files download is fixed
-* Multi-upload is added
-* External video works as expected
-* WB drawing on slides works as expected
-
-Chat
-* chat is made resizable
-* multiple issues in chat are fixed
-* typing indicator is added
-
-Calendar
-* date/time validator is improved
-* whole group can be invited by admin to event
-
-Other fixes and improvements, 49 issues were fixed
-
-
-=============
-_Integration with Asterisk_
-SIP/VOIP integration with Asterisk was refactored.
-Confbridge application is now used instead of Meetme for the conferences.
-Sound quality and SIP transport stability was significantly improved.
-Basic support for video is added (is unstable and in beta version stage now).
-See also: http://openmeetings.apache.org/red5sip-integration_2.1.html
-
-_Improving the sound and video quality_
-All the audio/video related components now use SWF11 for broadcasting and
-receiving audio and video signals.
-Echo cancellation can be enabled in the config.
-H264 video codec is now used instead of H263 to enable SIP video support.
-
-_Private and moderated chat_
-Ability to send private chat messages in the room is added as well as the chat
-moderation funmctionality.
-
-_SMS sending module_
-Possibility to send SMS message as a meeting reminder is added.
-See also: https://cwiki.apache.org/confluence/display/OPENMEETINGS/SMS+Sending+Module
-
-_Network testing tool/script_
-Network testing tool is implemented and its link is added to the login page.
-See also: https://cwiki.apache.org/confluence/display/OPENMEETINGS/Connection+testing+tool
-
-_Improvements in the mail sending process_
-Now e-mails are re-send again in case of unsuccessfull result at the first
-attempt or OpenMeetings re-start before the sending.
-SMTP setting updates now takes effect just after they saving whereas previously
-they started to work after the OpenMeetings re-start only.
-
-_Calendar_
-Messages about the meeting updates are sent only when substantial changes were made.
-Multiple external attendees can be added as one operation, it's now possible to
-specify user name for external guests (user will appear with this name in the user
-list in the room).
-
-_Room Interface_
-Possibility to get invitation link without sending an e-mail was added.
-Confirmation dialog for exclusive audio no longer appears.
-Hot key is added to be able to "rearrange" video windows in the room.
-Volume slider on the video pod toolbar was added.
-
-_Recordings and screen sharing improvements_
-Some improvements for the screen sharing and recordings quality and stability
-were made.
-
-_Cluster capabilities_
-In the beta stage: OpenMeetings can be configured in the cluster environment and
-is ready for the testing, but development has not been fnished yet.
-See also: http://openmeetings.apache.org/Clustering.html,
-https://cwiki.apache.org/confluence/display/OPENMEETINGS/Cluster+Master-Slave+overview
-
-_Admin/Calendar HTML5 UI_
-Additional HTML5 Wicket based UI (fully customizable with CSS) is added for
-static screens as a proof of the concept.
-
-Getting Started
-===============
-Please visit the project website for the latest information:
- http://openmeetings.apache.org/
-
-Documentation for Installation and Upgrade:
- http://openmeetings.apache.org/installation.html
- http://openmeetings.apache.org/Upgrade.html
-
-Along with the developer mailing list archive:
- http://openmeetings.apache.org/mail-lists.html
-
-
-System Requirements
-===================
-You need a platform that supports Sun Java SE 6.
-
-
-Building and running
-====================
-To build from source code:
-
- - Requirements:
- Sources compilation require Sun Java SE 8.
- The project is built with Apache Maven 3.3.9 or later.
-
- - To build the OpenMeetings project run ant in the root directory:
- ant
-
-For a detailed documentation on how to build from source and options see:
- http://openmeetings.apache.org/BuildInstructions.html
+Apache OpenMeetings - README
+Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
+--------------------------------------------------------------------------------
+
+About
+=====
+Apache OpenMeetings provides video conferencing, instant messaging, white board,
+collaborative document editing and other groupware tools using API functions of
+the Red5 Streaming Server for Remoting and Streaming.
+
+Release Notes 3.2.1
+=============
+see CHANGELOG file for detailed log
+
+Service release 1 for 3.2.0, provides following improvements:
+
+Room
+* Video is more stable
+* Office files download is fixed
+* Multi-upload is added
+* External video works as expected
+* WB drawing on slides works as expected
+
+Chat
+* chat is made resizable
+* multiple issues in chat are fixed
+* typing indicator is added
+
+Calendar
+* date/time validator is improved
+* whole group can be invited by admin to event
+
+Other fixes and improvements, 49 issues were fixed
+
+
+=============
+_Integration with Asterisk_
+SIP/VOIP integration with Asterisk was refactored.
+Confbridge application is now used instead of Meetme for the conferences.
+Sound quality and SIP transport stability was significantly improved.
+Basic support for video is added (is unstable and in beta version stage now).
+See also: http://openmeetings.apache.org/red5sip-integration_2.1.html
+
+_Improving the sound and video quality_
+All the audio/video related components now use SWF11 for broadcasting and
+receiving audio and video signals.
+Echo cancellation can be enabled in the config.
+H264 video codec is now used instead of H263 to enable SIP video support.
+
+_Private and moderated chat_
+Ability to send private chat messages in the room is added as well as the chat
+moderation funmctionality.
+
+_SMS sending module_
+Possibility to send SMS message as a meeting reminder is added.
+See also: https://cwiki.apache.org/confluence/display/OPENMEETINGS/SMS+Sending+Module
+
+_Network testing tool/script_
+Network testing tool is implemented and its link is added to the login page.
+See also: https://cwiki.apache.org/confluence/display/OPENMEETINGS/Connection+testing+tool
+
+_Improvements in the mail sending process_
+Now e-mails are re-send again in case of unsuccessfull result at the first
+attempt or OpenMeetings re-start before the sending.
+SMTP setting updates now takes effect just after they saving whereas previously
+they started to work after the OpenMeetings re-start only.
+
+_Calendar_
+Messages about the meeting updates are sent only when substantial changes were made.
+Multiple external attendees can be added as one operation, it's now possible to
+specify user name for external guests (user will appear with this name in the user
+list in the room).
+
+_Room Interface_
+Possibility to get invitation link without sending an e-mail was added.
+Confirmation dialog for exclusive audio no longer appears.
+Hot key is added to be able to "rearrange" video windows in the room.
+Volume slider on the video pod toolbar was added.
+
+_Recordings and screen sharing improvements_
+Some improvements for the screen sharing and recordings quality and stability
+were made.
+
+_Cluster capabilities_
+In the beta stage: OpenMeetings can be configured in the cluster environment and
+is ready for the testing, but development has not been fnished yet.
+See also: http://openmeetings.apache.org/Clustering.html,
+https://cwiki.apache.org/confluence/display/OPENMEETINGS/Cluster+Master-Slave+overview
+
+_Admin/Calendar HTML5 UI_
+Additional HTML5 Wicket based UI (fully customizable with CSS) is added for
+static screens as a proof of the concept.
+
+Getting Started
+===============
+Please visit the project website for the latest information:
+ http://openmeetings.apache.org/
+
+Documentation for Installation and Upgrade:
+ http://openmeetings.apache.org/installation.html
+ http://openmeetings.apache.org/Upgrade.html
+
+Along with the developer mailing list archive:
+ http://openmeetings.apache.org/mail-lists.html
+
+
+System Requirements
+===================
+You need a platform that supports Sun Java SE 6.
+
+
+Building and running
+====================
+To build from source code:
+
+ - Requirements:
+ Sources compilation require Sun Java SE 8.
+ The project is built with Apache Maven 3.3.9 or later.
+
+ - To build the OpenMeetings project run ant in the root directory:
+ ant
+
+For a detailed documentation on how to build from source and options see:
+ http://openmeetings.apache.org/BuildInstructions.html
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
index de93393..1520204 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
@@ -1,200 +1,200 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.core.data.record.listener.async;
-
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Date;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
-import org.apache.openmeetings.db.entity.record.RecordingMetaData;
-import org.apache.openmeetings.db.entity.record.RecordingMetaData.Status;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.red5.io.IStreamableFile;
-import org.red5.io.ITagWriter;
-import org.red5.logging.Red5LoggerFactory;
-import org.red5.server.api.scope.IScope;
-import org.red5.server.api.service.IStreamableFileService;
-import org.red5.server.api.stream.IStreamableFileFactory;
-import org.red5.server.stream.StreamableFileFactory;
-import org.red5.server.util.ScopeUtils;
-import org.slf4j.Logger;
-
-public abstract class BaseStreamWriter implements Runnable {
- private static final Logger log = Red5LoggerFactory.getLogger(BaseStreamWriter.class, webAppRootKey);
- private final static int MINUTE_MULTIPLIER = 60 * 1000;
- public final static int TIME_TO_WAIT_FOR_FRAME = 15 * MINUTE_MULTIPLIER;
- protected int startTimeStamp = -1;
- protected long initialDelta = 0;
-
- // thread is running
- private boolean running = false;
- // thread is stopped
- private boolean stopping = false;
- // thread will be stopped as soon as the queue is empty
- private boolean dostopping = false;
-
- protected ITagWriter writer = null;
-
- protected Long metaDataId = null;
-
- protected Date startedSessionTimeDate = null;
-
- protected File file;
-
- protected IScope scope;
-
- protected boolean isScreenData = false;
-
- protected String streamName = "";
- protected final RecordingMetaDataDao metaDataDao;
- private final BlockingQueue<CachedEvent> queue = new LinkedBlockingQueue<>();
-
- public BaseStreamWriter(String streamName, IScope scope, Long metaDataId, boolean isScreenData, RecordingMetaDataDao metaDataDao) {
- startedSessionTimeDate = new Date();
- this.isScreenData = isScreenData;
- this.streamName = streamName;
- this.metaDataId = metaDataId;
- this.metaDataDao = metaDataDao;
- this.scope = scope;
- try {
- init();
- } catch (IOException ex) {
- log.error("##REC:: [BaseStreamWriter] Could not init Thread", ex);
- }
- RecordingMetaData metaData = metaDataDao.get(metaDataId);
- metaData.setStreamStatus(Status.STARTED);
- metaDataDao.update(metaData);
-
- open();
- }
-
- /**
- * Initialization
- *
- * @throws IOException
- * I/O exception
- */
- private void init() throws IOException {
- file = new File(OmFileHelper.getStreamsSubDir(scope.getName()), OmFileHelper.getName(streamName, EXTENSION_FLV));
-
- IStreamableFileFactory factory = (IStreamableFileFactory) ScopeUtils.getScopeService(scope, IStreamableFileFactory.class,
- StreamableFileFactory.class);
-
- if (!file.isFile()) {
- // Maybe the (previously existing) file has been deleted
- file.createNewFile();
-
- } else if (!file.canWrite()) {
- throw new IOException("The file is read-only");
- }
-
- IStreamableFileService service = factory.getService(file);
- IStreamableFile flv = service.getStreamableFile(file);
- writer = flv.getWriter();
- }
-
- private void open() {
- running = true;
- new Thread(this, "Recording " + file.getName()).start();
- }
-
- public void stop() {
- dostopping = true;
- }
-
- @Override
- public void run() {
- log.debug("##REC:: stream writer started");
- long lastPackedRecieved = System.currentTimeMillis() + TIME_TO_WAIT_FOR_FRAME;
- long counter = 0;
- while (!stopping) {
- try {
- CachedEvent item = queue.poll(100, TimeUnit.MICROSECONDS);
- if (item != null) {
- log.trace("##REC:: got packet");
- lastPackedRecieved = System.currentTimeMillis();
- if (dostopping) {
- log.trace("metadatId: {} :: Recording stopped but still packets to write to file!", metaDataId);
- }
-
- packetReceived(item);
- } else if (dostopping || lastPackedRecieved + TIME_TO_WAIT_FOR_FRAME < System.currentTimeMillis()) {
- log.debug(String.format("##REC:: none packets received for: %s minutes, exiting", (System.currentTimeMillis() - lastPackedRecieved) / MINUTE_MULTIPLIER));
- stopping = true;
- closeStream();
- }
- if (++counter % 5000 == 0) {
- log.debug("##REC:: Stream writer is still listening:: " + file.getName());
- }
- } catch (InterruptedException e) {
- log.error("##REC:: [run]", e);
- }
- }
- log.debug("##REC:: stream writer stopped");
- }
-
- /**
- * Write the actual packet data to the disk and do calculate any needed additional information
- *
- * @param streampacket
- */
- public abstract void packetReceived(CachedEvent streampacket);
-
- protected abstract void internalCloseStream();
- /**
- * called when the stream is finished written on the disk
- */
- public void closeStream() {
- try {
- writer.close();
- } catch (Exception err) {
- log.error("[closeStream, close writer]", err);
- }
- internalCloseStream();
- // Write the complete Bit to the meta data, the converter task will wait for this bit!
- try {
- RecordingMetaData metaData = metaDataDao.get(metaDataId);
- log.debug("##REC:: Stream Status was: {} has been written for: {}", metaData.getStreamStatus(), metaDataId);
- metaData.setStreamStatus(Status.STOPPED);
- metaDataDao.update(metaData);
- } catch (Exception err) {
- log.error("##REC:: [closeStream, complete Bit]", err);
- }
- }
-
- public void append(CachedEvent streampacket) {
- if (!running) {
- throw new IllegalStateException("Append called before the Thread was started!");
- }
- try {
- queue.put(streampacket);
- log.trace("##REC:: Q put, successful: " + queue.size());
- } catch (InterruptedException ignored) {
- log.error("##REC:: [append]", ignored);
- }
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.core.data.record.listener.async;
+
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
+import org.apache.openmeetings.db.entity.record.RecordingMetaData;
+import org.apache.openmeetings.db.entity.record.RecordingMetaData.Status;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.red5.io.IStreamableFile;
+import org.red5.io.ITagWriter;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.scope.IScope;
+import org.red5.server.api.service.IStreamableFileService;
+import org.red5.server.api.stream.IStreamableFileFactory;
+import org.red5.server.stream.StreamableFileFactory;
+import org.red5.server.util.ScopeUtils;
+import org.slf4j.Logger;
+
+public abstract class BaseStreamWriter implements Runnable {
+ private static final Logger log = Red5LoggerFactory.getLogger(BaseStreamWriter.class, webAppRootKey);
+ private final static int MINUTE_MULTIPLIER = 60 * 1000;
+ public final static int TIME_TO_WAIT_FOR_FRAME = 15 * MINUTE_MULTIPLIER;
+ protected int startTimeStamp = -1;
+ protected long initialDelta = 0;
+
+ // thread is running
+ private boolean running = false;
+ // thread is stopped
+ private boolean stopping = false;
+ // thread will be stopped as soon as the queue is empty
+ private boolean dostopping = false;
+
+ protected ITagWriter writer = null;
+
+ protected Long metaDataId = null;
+
+ protected Date startedSessionTimeDate = null;
+
+ protected File file;
+
+ protected IScope scope;
+
+ protected boolean isScreenData = false;
+
+ protected String streamName = "";
+ protected final RecordingMetaDataDao metaDataDao;
+ private final BlockingQueue<CachedEvent> queue = new LinkedBlockingQueue<>();
+
+ public BaseStreamWriter(String streamName, IScope scope, Long metaDataId, boolean isScreenData, RecordingMetaDataDao metaDataDao) {
+ startedSessionTimeDate = new Date();
+ this.isScreenData = isScreenData;
+ this.streamName = streamName;
+ this.metaDataId = metaDataId;
+ this.metaDataDao = metaDataDao;
+ this.scope = scope;
+ try {
+ init();
+ } catch (IOException ex) {
+ log.error("##REC:: [BaseStreamWriter] Could not init Thread", ex);
+ }
+ RecordingMetaData metaData = metaDataDao.get(metaDataId);
+ metaData.setStreamStatus(Status.STARTED);
+ metaDataDao.update(metaData);
+
+ open();
+ }
+
+ /**
+ * Initialization
+ *
+ * @throws IOException
+ * I/O exception
+ */
+ private void init() throws IOException {
+ file = new File(OmFileHelper.getStreamsSubDir(scope.getName()), OmFileHelper.getName(streamName, EXTENSION_FLV));
+
+ IStreamableFileFactory factory = (IStreamableFileFactory) ScopeUtils.getScopeService(scope, IStreamableFileFactory.class,
+ StreamableFileFactory.class);
+
+ if (!file.isFile()) {
+ // Maybe the (previously existing) file has been deleted
+ file.createNewFile();
+
+ } else if (!file.canWrite()) {
+ throw new IOException("The file is read-only");
+ }
+
+ IStreamableFileService service = factory.getService(file);
+ IStreamableFile flv = service.getStreamableFile(file);
+ writer = flv.getWriter();
+ }
+
+ private void open() {
+ running = true;
+ new Thread(this, "Recording " + file.getName()).start();
+ }
+
+ public void stop() {
+ dostopping = true;
+ }
+
+ @Override
+ public void run() {
+ log.debug("##REC:: stream writer started");
+ long lastPackedRecieved = System.currentTimeMillis() + TIME_TO_WAIT_FOR_FRAME;
+ long counter = 0;
+ while (!stopping) {
+ try {
+ CachedEvent item = queue.poll(100, TimeUnit.MICROSECONDS);
+ if (item != null) {
+ log.trace("##REC:: got packet");
+ lastPackedRecieved = System.currentTimeMillis();
+ if (dostopping) {
+ log.trace("metadatId: {} :: Recording stopped but still packets to write to file!", metaDataId);
+ }
+
+ packetReceived(item);
+ } else if (dostopping || lastPackedRecieved + TIME_TO_WAIT_FOR_FRAME < System.currentTimeMillis()) {
+ log.debug(String.format("##REC:: none packets received for: %s minutes, exiting", (System.currentTimeMillis() - lastPackedRecieved) / MINUTE_MULTIPLIER));
+ stopping = true;
+ closeStream();
+ }
+ if (++counter % 5000 == 0) {
+ log.debug("##REC:: Stream writer is still listening:: " + file.getName());
+ }
+ } catch (InterruptedException e) {
+ log.error("##REC:: [run]", e);
+ }
+ }
+ log.debug("##REC:: stream writer stopped");
+ }
+
+ /**
+ * Write the actual packet data to the disk and do calculate any needed additional information
+ *
+ * @param streampacket
+ */
+ public abstract void packetReceived(CachedEvent streampacket);
+
+ protected abstract void internalCloseStream();
+ /**
+ * called when the stream is finished written on the disk
+ */
+ public void closeStream() {
+ try {
+ writer.close();
+ } catch (Exception err) {
+ log.error("[closeStream, close writer]", err);
+ }
+ internalCloseStream();
+ // Write the complete Bit to the meta data, the converter task will wait for this bit!
+ try {
+ RecordingMetaData metaData = metaDataDao.get(metaDataId);
+ log.debug("##REC:: Stream Status was: {} has been written for: {}", metaData.getStreamStatus(), metaDataId);
+ metaData.setStreamStatus(Status.STOPPED);
+ metaDataDao.update(metaData);
+ } catch (Exception err) {
+ log.error("##REC:: [closeStream, complete Bit]", err);
+ }
+ }
+
+ public void append(CachedEvent streampacket) {
+ if (!running) {
+ throw new IllegalStateException("Append called before the Thread was started!");
+ }
+ try {
+ queue.put(streampacket);
+ log.trace("##REC:: Q put, successful: " + queue.size());
+ } catch (InterruptedException ignored) {
+ log.error("##REC:: [append]", ignored);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/CachedEvent.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/CachedEvent.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/CachedEvent.java
index 433cf80..4184290 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/CachedEvent.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/CachedEvent.java
@@ -1,76 +1,76 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.core.data.record.listener.async;
-
-import java.util.Date;
-
-import org.apache.mina.core.buffer.IoBuffer;
-import org.red5.server.api.stream.IStreamPacket;
-import org.red5.server.net.rtmp.event.VideoData.FrameType;
-
-public class CachedEvent implements IStreamPacket {
- private byte dataType;
- private int timestamp; //this is the timeStamp, showing the time elapsed since the microphone was turned on
- private IoBuffer data;
- private Date currentTime; //this is the actually current timeStamp when the packet with audio data did enter the server
- private FrameType frameType = FrameType.UNKNOWN;
-
- public Date getCurrentTime() {
- return currentTime;
- }
-
- public void setCurrentTime(Date currentTime) {
- this.currentTime = currentTime;
- }
-
- public void setDataType(byte dataType) {
- this.dataType = dataType;
- }
-
- public void setTimestamp(int timestamp) {
- this.timestamp = timestamp;
- }
-
- public void setData(IoBuffer data) {
- this.data = data;
- }
-
- @Override
- public byte getDataType() {
- return dataType;
- }
-
- @Override
- public int getTimestamp() {
- return timestamp;
- }
-
- @Override
- public IoBuffer getData() {
- return data;
- }
-
- public FrameType getFrameType() {
- return frameType;
- }
-
- public void setFrameType(FrameType frameType) {
- this.frameType = frameType;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.core.data.record.listener.async;
+
+import java.util.Date;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.red5.server.api.stream.IStreamPacket;
+import org.red5.server.net.rtmp.event.VideoData.FrameType;
+
+public class CachedEvent implements IStreamPacket {
+ private byte dataType;
+ private int timestamp; //this is the timeStamp, showing the time elapsed since the microphone was turned on
+ private IoBuffer data;
+ private Date currentTime; //this is the actually current timeStamp when the packet with audio data did enter the server
+ private FrameType frameType = FrameType.UNKNOWN;
+
+ public Date getCurrentTime() {
+ return currentTime;
+ }
+
+ public void setCurrentTime(Date currentTime) {
+ this.currentTime = currentTime;
+ }
+
+ public void setDataType(byte dataType) {
+ this.dataType = dataType;
+ }
+
+ public void setTimestamp(int timestamp) {
+ this.timestamp = timestamp;
+ }
+
+ public void setData(IoBuffer data) {
+ this.data = data;
+ }
+
+ @Override
+ public byte getDataType() {
+ return dataType;
+ }
+
+ @Override
+ public int getTimestamp() {
+ return timestamp;
+ }
+
+ @Override
+ public IoBuffer getData() {
+ return data;
+ }
+
+ public FrameType getFrameType() {
+ return frameType;
+ }
+
+ public void setFrameType(FrameType frameType) {
+ this.frameType = frameType;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamAudioWriter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamAudioWriter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamAudioWriter.java
index a7391a6..736fea6 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamAudioWriter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamAudioWriter.java
@@ -1,228 +1,228 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.core.data.record.listener.async;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.red5.io.IoConstants.TYPE_AUDIO;
-import static org.red5.server.net.rtmp.event.VideoData.FrameType.KEYFRAME;
-
-import java.util.Date;
-
-import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
-import org.apache.openmeetings.db.dao.record.RecordingMetaDeltaDao;
-import org.apache.openmeetings.db.entity.record.RecordingMetaData;
-import org.apache.openmeetings.db.entity.record.RecordingMetaDelta;
-import org.red5.io.ITag;
-import org.red5.io.flv.impl.Tag;
-import org.red5.logging.Red5LoggerFactory;
-import org.red5.server.api.scope.IScope;
-import org.slf4j.Logger;
-
-public class StreamAudioWriter extends BaseStreamWriter {
- private static final Logger log = Red5LoggerFactory.getLogger(StreamAudioWriter.class, webAppRootKey);
-
- private int duration = 0;
-
- private Integer lastTimeStamp = -1;
- private Date lastcurrentTime = null;
-
- private int lastStreamPacketTimeStamp = -1;
-
- private long byteCount = 0;
-
- // Autowire is not possible
- protected final RecordingMetaDeltaDao metaDeltaDao;
-
- private boolean isInterview = false;
-
- public StreamAudioWriter(String streamName, IScope scope, Long metaDataId, boolean isScreenData,
- boolean isInterview, RecordingMetaDataDao metaDataDao, RecordingMetaDeltaDao metaDeltaDao) {
- super(streamName, scope, metaDataId, isScreenData, metaDataDao);
-
- this.metaDeltaDao = metaDeltaDao;
- this.isInterview = isInterview;
- }
-
- @Override
- public void packetReceived(CachedEvent streampacket) {
- try {
- // We only care about audio at this moment
- if (isInterview || TYPE_AUDIO == streampacket.getDataType()) {
- if (streampacket.getTimestamp() <= 0) {
- log.warn("##REC:: Negative TimeStamp");
- return;
- }
- // we should not skip audio data in case it is Audio only interview
- if (isInterview && isScreenData && startTimeStamp == -1 && KEYFRAME != streampacket.getFrameType()) {
- //skip until keyframe
- log.trace("##REC:: no KEYFRAME, skipping");
- return;
- }
- IoBuffer data = streampacket.getData().asReadOnlyBuffer();
- if (data.limit() == 0) {
- log.trace("##REC:: data.limit() == 0 ");
- return;
- }
-
- byteCount += data.limit();
-
- lastcurrentTime = streampacket.getCurrentTime();
- int timeStamp = streampacket.getTimestamp();
- Date virtualTime = streampacket.getCurrentTime();
-
- if (startTimeStamp == -1) {
- // Calculate the delta between the initial start and the first audio-packet data
-
- initialDelta = virtualTime.getTime() - startedSessionTimeDate.getTime();
-
- RecordingMetaDelta metaDelta = new RecordingMetaDelta();
-
- metaDelta.setDeltaTime(initialDelta);
- metaDelta.setMetaDataId(metaDataId);
- metaDelta.setTimeStamp(0);
- metaDelta.setDebugStatus("INIT AUDIO");
- metaDelta.setStartPadding(true);
- metaDelta.setEndPadding(false);
- metaDelta.setDataLengthPacket(data.limit());
- metaDelta.setReceivedAudioDataLength(byteCount);
- metaDelta.setStartTime(startedSessionTimeDate);
- metaDelta.setPacketTimeStamp(streampacket.getTimestamp());
-
- Long deltaTimeStamp = virtualTime.getTime() - startedSessionTimeDate.getTime();
-
- metaDelta.setDuration(0);
-
- Long missingTime = deltaTimeStamp - 0;
-
- metaDelta.setMissingTime(missingTime);
-
- metaDelta.setCurrentTime(virtualTime);
- metaDelta.setDeltaTimeStamp(deltaTimeStamp);
- metaDelta.setStartTimeStamp(startTimeStamp);
-
- metaDeltaDao.add(metaDelta);
-
- // That will be not bigger then long value
- startTimeStamp = streampacket.getTimestamp();
-
- RecordingMetaData metaData = metaDataDao.get(metaDataId);
- metaData.setRecordStart(virtualTime);
- metaDataDao.update(metaData);
- }
-
- lastStreamPacketTimeStamp = streampacket.getTimestamp();
-
- timeStamp -= startTimeStamp;
-
- // Offset at the beginning is calculated above
- long deltaTime = lastTimeStamp == -1 ? 0 : timeStamp - lastTimeStamp;
-
- Long preLastTimeStamp = Long.parseLong(lastTimeStamp.toString());
-
- lastTimeStamp = timeStamp;
-
- if (deltaTime > 75) {
- RecordingMetaDelta metaDelta = new RecordingMetaDelta();
-
- metaDelta.setDeltaTime(deltaTime);
- metaDelta.setMetaDataId(metaDataId);
- metaDelta.setTimeStamp(timeStamp);
- metaDelta.setDebugStatus("RUN AUDIO");
- metaDelta.setStartPadding(false);
- metaDelta.setLastTimeStamp(preLastTimeStamp);
- metaDelta.setEndPadding(false);
- metaDelta.setDataLengthPacket(data.limit());
- metaDelta.setReceivedAudioDataLength(byteCount);
- metaDelta.setStartTime(startedSessionTimeDate);
- metaDelta.setPacketTimeStamp(streampacket.getTimestamp());
-
- Date current_date = new Date();
- Long deltaTimeStamp = current_date.getTime() - startedSessionTimeDate.getTime();
-
- duration = Math.max(duration, timeStamp + writer.getOffset());
- metaDelta.setDuration(duration);
-
- Long missingTime = deltaTimeStamp - timeStamp;
-
- metaDelta.setMissingTime(missingTime);
-
- metaDelta.setCurrentTime(current_date);
- metaDelta.setDeltaTimeStamp(deltaTimeStamp);
- metaDelta.setStartTimeStamp(startTimeStamp);
-
- metaDeltaDao.add(metaDelta);
- }
-
- log.trace("##REC:: timeStamp :: " + timeStamp);
- ITag tag = new Tag();
- tag.setDataType(streampacket.getDataType());
-
- // log.debug("data.limit() :: "+data.limit());
- tag.setBodySize(data.limit());
- tag.setTimestamp(timeStamp);
- tag.setBody(data);
-
- writer.writeTag(tag);
-
- }
- } catch (Exception e) {
- log.error("##REC:: [packetReceived]", e);
- }
- }
-
- @Override
- protected void internalCloseStream() {
- try {
- // We do not add any End Padding or count the gaps for the
- // Screen Data, cause there is no!
-
- Date virtualTime = lastcurrentTime;
- log.debug("##REC:: virtualTime: " + virtualTime);
- log.debug("##REC:: startedSessionTimeDate: " + startedSessionTimeDate);
-
- long deltaRecordingTime = virtualTime == null ? 0 : virtualTime.getTime() - startedSessionTimeDate.getTime();
-
- log.debug("##REC:: lastTimeStamp :closeStream: " + lastTimeStamp);
- log.debug("##REC:: lastStreamPacketTimeStamp :closeStream: " + lastStreamPacketTimeStamp);
- log.debug("##REC:: deltaRecordingTime :closeStream: " + deltaRecordingTime);
-
- long deltaTimePaddingEnd = deltaRecordingTime - lastTimeStamp - initialDelta;
-
- log.debug("##REC:: deltaTimePaddingEnd :: " + deltaTimePaddingEnd);
-
- RecordingMetaDelta metaDelta = new RecordingMetaDelta();
-
- metaDelta.setDeltaTime(deltaTimePaddingEnd);
- metaDelta.setMetaDataId(metaDataId);
- metaDelta.setTimeStamp(lastTimeStamp);
- metaDelta.setDebugStatus("END AUDIO");
- metaDelta.setStartPadding(false);
- metaDelta.setEndPadding(true);
- metaDelta.setDataLengthPacket(null);
- metaDelta.setReceivedAudioDataLength(byteCount);
- metaDelta.setStartTime(startedSessionTimeDate);
- metaDelta.setCurrentTime(new Date());
-
- metaDeltaDao.add(metaDelta);
- } catch (Exception err) {
- log.error("##REC:: [internalCloseStream]", err);
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.core.data.record.listener.async;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.red5.io.IoConstants.TYPE_AUDIO;
+import static org.red5.server.net.rtmp.event.VideoData.FrameType.KEYFRAME;
+
+import java.util.Date;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
+import org.apache.openmeetings.db.dao.record.RecordingMetaDeltaDao;
+import org.apache.openmeetings.db.entity.record.RecordingMetaData;
+import org.apache.openmeetings.db.entity.record.RecordingMetaDelta;
+import org.red5.io.ITag;
+import org.red5.io.flv.impl.Tag;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.scope.IScope;
+import org.slf4j.Logger;
+
+public class StreamAudioWriter extends BaseStreamWriter {
+ private static final Logger log = Red5LoggerFactory.getLogger(StreamAudioWriter.class, webAppRootKey);
+
+ private int duration = 0;
+
+ private Integer lastTimeStamp = -1;
+ private Date lastcurrentTime = null;
+
+ private int lastStreamPacketTimeStamp = -1;
+
+ private long byteCount = 0;
+
+ // Autowire is not possible
+ protected final RecordingMetaDeltaDao metaDeltaDao;
+
+ private boolean isInterview = false;
+
+ public StreamAudioWriter(String streamName, IScope scope, Long metaDataId, boolean isScreenData,
+ boolean isInterview, RecordingMetaDataDao metaDataDao, RecordingMetaDeltaDao metaDeltaDao) {
+ super(streamName, scope, metaDataId, isScreenData, metaDataDao);
+
+ this.metaDeltaDao = metaDeltaDao;
+ this.isInterview = isInterview;
+ }
+
+ @Override
+ public void packetReceived(CachedEvent streampacket) {
+ try {
+ // We only care about audio at this moment
+ if (isInterview || TYPE_AUDIO == streampacket.getDataType()) {
+ if (streampacket.getTimestamp() <= 0) {
+ log.warn("##REC:: Negative TimeStamp");
+ return;
+ }
+ // we should not skip audio data in case it is Audio only interview
+ if (isInterview && isScreenData && startTimeStamp == -1 && KEYFRAME != streampacket.getFrameType()) {
+ //skip until keyframe
+ log.trace("##REC:: no KEYFRAME, skipping");
+ return;
+ }
+ IoBuffer data = streampacket.getData().asReadOnlyBuffer();
+ if (data.limit() == 0) {
+ log.trace("##REC:: data.limit() == 0 ");
+ return;
+ }
+
+ byteCount += data.limit();
+
+ lastcurrentTime = streampacket.getCurrentTime();
+ int timeStamp = streampacket.getTimestamp();
+ Date virtualTime = streampacket.getCurrentTime();
+
+ if (startTimeStamp == -1) {
+ // Calculate the delta between the initial start and the first audio-packet data
+
+ initialDelta = virtualTime.getTime() - startedSessionTimeDate.getTime();
+
+ RecordingMetaDelta metaDelta = new RecordingMetaDelta();
+
+ metaDelta.setDeltaTime(initialDelta);
+ metaDelta.setMetaDataId(metaDataId);
+ metaDelta.setTimeStamp(0);
+ metaDelta.setDebugStatus("INIT AUDIO");
+ metaDelta.setStartPadding(true);
+ metaDelta.setEndPadding(false);
+ metaDelta.setDataLengthPacket(data.limit());
+ metaDelta.setReceivedAudioDataLength(byteCount);
+ metaDelta.setStartTime(startedSessionTimeDate);
+ metaDelta.setPacketTimeStamp(streampacket.getTimestamp());
+
+ Long deltaTimeStamp = virtualTime.getTime() - startedSessionTimeDate.getTime();
+
+ metaDelta.setDuration(0);
+
+ Long missingTime = deltaTimeStamp - 0;
+
+ metaDelta.setMissingTime(missingTime);
+
+ metaDelta.setCurrentTime(virtualTime);
+ metaDelta.setDeltaTimeStamp(deltaTimeStamp);
+ metaDelta.setStartTimeStamp(startTimeStamp);
+
+ metaDeltaDao.add(metaDelta);
+
+ // That will be not bigger then long value
+ startTimeStamp = streampacket.getTimestamp();
+
+ RecordingMetaData metaData = metaDataDao.get(metaDataId);
+ metaData.setRecordStart(virtualTime);
+ metaDataDao.update(metaData);
+ }
+
+ lastStreamPacketTimeStamp = streampacket.getTimestamp();
+
+ timeStamp -= startTimeStamp;
+
+ // Offset at the beginning is calculated above
+ long deltaTime = lastTimeStamp == -1 ? 0 : timeStamp - lastTimeStamp;
+
+ Long preLastTimeStamp = Long.parseLong(lastTimeStamp.toString());
+
+ lastTimeStamp = timeStamp;
+
+ if (deltaTime > 75) {
+ RecordingMetaDelta metaDelta = new RecordingMetaDelta();
+
+ metaDelta.setDeltaTime(deltaTime);
+ metaDelta.setMetaDataId(metaDataId);
+ metaDelta.setTimeStamp(timeStamp);
+ metaDelta.setDebugStatus("RUN AUDIO");
+ metaDelta.setStartPadding(false);
+ metaDelta.setLastTimeStamp(preLastTimeStamp);
+ metaDelta.setEndPadding(false);
+ metaDelta.setDataLengthPacket(data.limit());
+ metaDelta.setReceivedAudioDataLength(byteCount);
+ metaDelta.setStartTime(startedSessionTimeDate);
+ metaDelta.setPacketTimeStamp(streampacket.getTimestamp());
+
+ Date current_date = new Date();
+ Long deltaTimeStamp = current_date.getTime() - startedSessionTimeDate.getTime();
+
+ duration = Math.max(duration, timeStamp + writer.getOffset());
+ metaDelta.setDuration(duration);
+
+ Long missingTime = deltaTimeStamp - timeStamp;
+
+ metaDelta.setMissingTime(missingTime);
+
+ metaDelta.setCurrentTime(current_date);
+ metaDelta.setDeltaTimeStamp(deltaTimeStamp);
+ metaDelta.setStartTimeStamp(startTimeStamp);
+
+ metaDeltaDao.add(metaDelta);
+ }
+
+ log.trace("##REC:: timeStamp :: " + timeStamp);
+ ITag tag = new Tag();
+ tag.setDataType(streampacket.getDataType());
+
+ // log.debug("data.limit() :: "+data.limit());
+ tag.setBodySize(data.limit());
+ tag.setTimestamp(timeStamp);
+ tag.setBody(data);
+
+ writer.writeTag(tag);
+
+ }
+ } catch (Exception e) {
+ log.error("##REC:: [packetReceived]", e);
+ }
+ }
+
+ @Override
+ protected void internalCloseStream() {
+ try {
+ // We do not add any End Padding or count the gaps for the
+ // Screen Data, cause there is no!
+
+ Date virtualTime = lastcurrentTime;
+ log.debug("##REC:: virtualTime: " + virtualTime);
+ log.debug("##REC:: startedSessionTimeDate: " + startedSessionTimeDate);
+
+ long deltaRecordingTime = virtualTime == null ? 0 : virtualTime.getTime() - startedSessionTimeDate.getTime();
+
+ log.debug("##REC:: lastTimeStamp :closeStream: " + lastTimeStamp);
+ log.debug("##REC:: lastStreamPacketTimeStamp :closeStream: " + lastStreamPacketTimeStamp);
+ log.debug("##REC:: deltaRecordingTime :closeStream: " + deltaRecordingTime);
+
+ long deltaTimePaddingEnd = deltaRecordingTime - lastTimeStamp - initialDelta;
+
+ log.debug("##REC:: deltaTimePaddingEnd :: " + deltaTimePaddingEnd);
+
+ RecordingMetaDelta metaDelta = new RecordingMetaDelta();
+
+ metaDelta.setDeltaTime(deltaTimePaddingEnd);
+ metaDelta.setMetaDataId(metaDataId);
+ metaDelta.setTimeStamp(lastTimeStamp);
+ metaDelta.setDebugStatus("END AUDIO");
+ metaDelta.setStartPadding(false);
+ metaDelta.setEndPadding(true);
+ metaDelta.setDataLengthPacket(null);
+ metaDelta.setReceivedAudioDataLength(byteCount);
+ metaDelta.setStartTime(startedSessionTimeDate);
+ metaDelta.setCurrentTime(new Date());
+
+ metaDeltaDao.add(metaDelta);
+ } catch (Exception err) {
+ log.error("##REC:: [internalCloseStream]", err);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamVideoWriter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamVideoWriter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamVideoWriter.java
index 169379d..8596042 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamVideoWriter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/StreamVideoWriter.java
@@ -1,98 +1,98 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.core.data.record.listener.async;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.red5.server.net.rtmp.event.VideoData.FrameType.KEYFRAME;
-
-import java.util.Date;
-
-import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
-import org.apache.openmeetings.db.entity.record.RecordingMetaData;
-import org.red5.io.ITag;
-import org.red5.io.flv.impl.Tag;
-import org.red5.logging.Red5LoggerFactory;
-import org.red5.server.api.scope.IScope;
-import org.slf4j.Logger;
-
-public class StreamVideoWriter extends BaseStreamWriter {
- private static final Logger log = Red5LoggerFactory.getLogger(StreamVideoWriter.class, webAppRootKey);
- private Date startedSessionScreenTimeDate = null;
-
- public StreamVideoWriter(String streamName, IScope scope, Long metaDataId, boolean isScreenData,
- RecordingMetaDataDao metaDataDao) {
-
- super(streamName, scope, metaDataId, isScreenData, metaDataDao);
- }
-
- @Override
- public void packetReceived(CachedEvent streampacket) {
- try {
- int timeStamp = streampacket.getTimestamp();
- log.trace("incoming timeStamp :: " + timeStamp);
- if (startTimeStamp == -1 && KEYFRAME != streampacket.getFrameType()) {
- //skip until keyframe
- log.trace("no KEYFRAME, skipping ::" + streampacket.getFrameType());
- return;
- }
- if (timeStamp <= 0) {
- log.warn("Negative TimeStamp");
- return;
- }
- IoBuffer data = streampacket.getData().asReadOnlyBuffer();
- if (data.limit() == 0) {
- log.trace("Data.limit() == 0");
- return;
- }
- Date virtualTime = streampacket.getCurrentTime();
-
- if (startedSessionScreenTimeDate == null) {
- startedSessionScreenTimeDate = virtualTime;
-
- RecordingMetaData metaData = metaDataDao.get(metaDataId);
- metaData.setRecordStart(virtualTime);
- metaDataDao.update(metaData);
- }
-
- if (startTimeStamp == -1) {
- // That will be not bigger then long value
- startTimeStamp = timeStamp;
- }
-
- timeStamp -= startTimeStamp;
-
- log.trace("timeStamp :: " + timeStamp);
- ITag tag = new Tag();
- tag.setDataType(streampacket.getDataType());
-
- tag.setBodySize(data.limit());
- tag.setTimestamp(timeStamp);
- tag.setBody(data);
-
- writer.writeTag(tag);
- } catch (Exception e) {
- log.error("[packetReceived]", e);
- }
- }
-
- @Override
- protected void internalCloseStream() {
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.core.data.record.listener.async;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.red5.server.net.rtmp.event.VideoData.FrameType.KEYFRAME;
+
+import java.util.Date;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
+import org.apache.openmeetings.db.entity.record.RecordingMetaData;
+import org.red5.io.ITag;
+import org.red5.io.flv.impl.Tag;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.scope.IScope;
+import org.slf4j.Logger;
+
+public class StreamVideoWriter extends BaseStreamWriter {
+ private static final Logger log = Red5LoggerFactory.getLogger(StreamVideoWriter.class, webAppRootKey);
+ private Date startedSessionScreenTimeDate = null;
+
+ public StreamVideoWriter(String streamName, IScope scope, Long metaDataId, boolean isScreenData,
+ RecordingMetaDataDao metaDataDao) {
+
+ super(streamName, scope, metaDataId, isScreenData, metaDataDao);
+ }
+
+ @Override
+ public void packetReceived(CachedEvent streampacket) {
+ try {
+ int timeStamp = streampacket.getTimestamp();
+ log.trace("incoming timeStamp :: " + timeStamp);
+ if (startTimeStamp == -1 && KEYFRAME != streampacket.getFrameType()) {
+ //skip until keyframe
+ log.trace("no KEYFRAME, skipping ::" + streampacket.getFrameType());
+ return;
+ }
+ if (timeStamp <= 0) {
+ log.warn("Negative TimeStamp");
+ return;
+ }
+ IoBuffer data = streampacket.getData().asReadOnlyBuffer();
+ if (data.limit() == 0) {
+ log.trace("Data.limit() == 0");
+ return;
+ }
+ Date virtualTime = streampacket.getCurrentTime();
+
+ if (startedSessionScreenTimeDate == null) {
+ startedSessionScreenTimeDate = virtualTime;
+
+ RecordingMetaData metaData = metaDataDao.get(metaDataId);
+ metaData.setRecordStart(virtualTime);
+ metaDataDao.update(metaData);
+ }
+
+ if (startTimeStamp == -1) {
+ // That will be not bigger then long value
+ startTimeStamp = timeStamp;
+ }
+
+ timeStamp -= startTimeStamp;
+
+ log.trace("timeStamp :: " + timeStamp);
+ ITag tag = new Tag();
+ tag.setDataType(streampacket.getDataType());
+
+ tag.setBodySize(data.limit());
+ tag.setTimestamp(timeStamp);
+ tag.setBody(data);
+
+ writer.writeTag(tag);
+ } catch (Exception e) {
+ log.error("[packetReceived]", e);
+ }
+ }
+
+ @Override
+ protected void internalCloseStream() {
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/SMSHandler.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/SMSHandler.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/SMSHandler.java
index 89d62b4..bf17d61 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/SMSHandler.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/SMSHandler.java
@@ -1,118 +1,118 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.core.mail;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.smslib.Message.MessageEncodings;
-import org.smslib.OutboundMessage;
-import org.smslib.Service;
-import org.smslib.http.BulkSmsHTTPGateway;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.task.TaskExecutor;
-
-/**
- *
- * @author iarkh
- *
- */
-
-public class SMSHandler {
-
- private static final Logger log = Red5LoggerFactory.getLogger(
- SMSHandler.class, OpenmeetingsVariables.webAppRootKey);
-
- @Autowired
- protected ConfigurationDao configurationDao;
- @Autowired
- protected TaskExecutor taskExecutor;
-
- private BulkSmsHTTPGateway gateway = null;
-
- private boolean checkBalance() throws Exception {
- if (gateway == null) {
- String smsProvider = configurationDao.getConfValue("sms.provider", String.class, null);
- String smsUsername = configurationDao.getConfValue("sms.username", String.class, null);
- String smsUserpass = configurationDao.getConfValue("sms.userpass", String.class, null);
-
- if (smsProvider == null || smsProvider.length() == 0 ||
- smsUsername == null || smsUsername.length() == 0) {
- log.error("SMS Provider is not configured properly!");
- return false;
- }
- gateway = new BulkSmsHTTPGateway(smsProvider, smsUsername, smsUserpass);
- gateway.setOutbound(true);
- Service.getInstance().addGateway(gateway);
- Service.getInstance().startService();
- }
- return gateway.queryBalance() >= 1;
- }
-
- public boolean sendSMS(String phone, String subj, long languageId) {
- try {
- taskExecutor.execute(new SMSSenderTask(phone, subj, languageId));
- return true;
- } catch (Exception ex) {
- log.error("sendSMS", ex);
- return false;
- }
- }
-
- protected class SMSSenderTask implements Runnable {
- private final String phone;
- private final String subject;
- private long languageId;
-
- public SMSSenderTask(String phone, String subject, long languageId) {
- this.phone = phone;
- this.subject = subject;
- this.languageId = languageId;
- }
-
- @Override
- public void run() {
- this.send();
- }
-
- /**
- * Sending an SMS with the given values.
- * @return <code>true</code> if sms was sent successfully, <code>false</code> otherwise.
- */
- public boolean send() {
- try {
- log.debug("SMS sending to: " + phone + ", subject is: " + subject);
- if (checkBalance()) {
- OutboundMessage msg = new OutboundMessage(phone, subject);
- if (languageId != 1) {
- msg.setEncoding(MessageEncodings.ENCUCS2);
- }
- return Service.getInstance().sendMessage(msg);
- } else {
- log.error("Error: insufficient funds on SMS provider account!");
- return false;
- }
- } catch (Exception ex) {
- log.error("Error sending sms: ", ex);
- return false;
- }
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.core.mail;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.smslib.Message.MessageEncodings;
+import org.smslib.OutboundMessage;
+import org.smslib.Service;
+import org.smslib.http.BulkSmsHTTPGateway;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.task.TaskExecutor;
+
+/**
+ *
+ * @author iarkh
+ *
+ */
+
+public class SMSHandler {
+
+ private static final Logger log = Red5LoggerFactory.getLogger(
+ SMSHandler.class, OpenmeetingsVariables.webAppRootKey);
+
+ @Autowired
+ protected ConfigurationDao configurationDao;
+ @Autowired
+ protected TaskExecutor taskExecutor;
+
+ private BulkSmsHTTPGateway gateway = null;
+
+ private boolean checkBalance() throws Exception {
+ if (gateway == null) {
+ String smsProvider = configurationDao.getConfValue("sms.provider", String.class, null);
+ String smsUsername = configurationDao.getConfValue("sms.username", String.class, null);
+ String smsUserpass = configurationDao.getConfValue("sms.userpass", String.class, null);
+
+ if (smsProvider == null || smsProvider.length() == 0 ||
+ smsUsername == null || smsUsername.length() == 0) {
+ log.error("SMS Provider is not configured properly!");
+ return false;
+ }
+ gateway = new BulkSmsHTTPGateway(smsProvider, smsUsername, smsUserpass);
+ gateway.setOutbound(true);
+ Service.getInstance().addGateway(gateway);
+ Service.getInstance().startService();
+ }
+ return gateway.queryBalance() >= 1;
+ }
+
+ public boolean sendSMS(String phone, String subj, long languageId) {
+ try {
+ taskExecutor.execute(new SMSSenderTask(phone, subj, languageId));
+ return true;
+ } catch (Exception ex) {
+ log.error("sendSMS", ex);
+ return false;
+ }
+ }
+
+ protected class SMSSenderTask implements Runnable {
+ private final String phone;
+ private final String subject;
+ private long languageId;
+
+ public SMSSenderTask(String phone, String subject, long languageId) {
+ this.phone = phone;
+ this.subject = subject;
+ this.languageId = languageId;
+ }
+
+ @Override
+ public void run() {
+ this.send();
+ }
+
+ /**
+ * Sending an SMS with the given values.
+ * @return <code>true</code> if sms was sent successfully, <code>false</code> otherwise.
+ */
+ public boolean send() {
+ try {
+ log.debug("SMS sending to: " + phone + ", subject is: " + subject);
+ if (checkBalance()) {
+ OutboundMessage msg = new OutboundMessage(phone, subject);
+ if (languageId != 1) {
+ msg.setEncoding(MessageEncodings.ENCUCS2);
+ }
+ return Service.getInstance().sendMessage(msg);
+ } else {
+ log.error("Error: insufficient funds on SMS provider account!");
+ return false;
+ }
+ } catch (Exception ex) {
+ log.error("Error sending sms: ", ex);
+ return false;
+ }
+ }
+ }
+}
[25/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
index cc3121f..6a51b5b 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
@@ -1,365 +1,365 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.core.session;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.UUID;
-
-import org.apache.openmeetings.core.session.store.IClientPersistenceStore;
-import org.apache.openmeetings.db.dao.server.ISessionManager;
-import org.apache.openmeetings.db.dto.basic.SearchResult;
-import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
-import org.apache.openmeetings.db.entity.room.Client;
-import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.wicket.util.string.Strings;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * Handle {@link Client} objects.
- *
- * Use a kind of decorator pattern to inject the {@link Server} into every call.
- *
- * @author sebawagner
- *
- */
-public class SessionManager implements ISessionManager {
- protected static final Logger log = Red5LoggerFactory.getLogger(SessionManager.class, webAppRootKey);
-
- @Autowired
- private ServerUtil serverUtil;
-
- /**
- * Injected via Spring, needs a getter/setter because it can be configured
- * Autowired will not suit here as there are multiple implementations of the
- * {@link IClientPersistenceStore}
- */
- private IClientPersistenceStore cache;
-
- public IClientPersistenceStore getCache() {
- return cache;
- }
-
- public void setCache(IClientPersistenceStore cache) {
- this.cache = cache;
- }
-
- @Override
- public void clearCache() {
- cache.clear();
- }
-
- @Override
- public Client add(Client c, Server server) {
- if (c == null) {
- return null;
- }
- if (server == null) {
- server = serverUtil.getCurrentServer();
- }
- c.setConnectedSince(new Date());
- c.setRoomEnter(new Date());
- if (Strings.isEmpty(c.getPublicSID())) {
- c.setPublicSID(UUID.randomUUID().toString());
- }
- c.setServer(server);
-
- if (cache.containsKey(null, c.getStreamid())) {
- log.error("Tried to add an existing Client " + c.getStreamid());
- return null;
- }
-
- cache.put(c.getStreamid(), c);
- return c;
- }
-
- @Override
- public Client addClientListItem(String streamId, String scopeName,
- int remotePort, String remoteAddress, String swfUrl, Server server) {
- if (server == null) {
- server = serverUtil.getCurrentServer();
- }
- try {
-
- // Store the Connection into a bean and add it to the HashMap
- Client rcm = new Client();
- rcm.setConnectedSince(new Date());
- rcm.setStreamid(streamId);
- rcm.setScope(scopeName);
- rcm.setPublicSID(UUID.randomUUID().toString());
- rcm.setServer(server);
- rcm.setUserport(remotePort);
- rcm.setUserip(remoteAddress);
- rcm.setSwfurl(swfUrl);
- rcm.setIsMod(false);
- rcm.setCanDraw(false);
-
- if (cache.containsKey(null, streamId)) {
- log.error("Tried to add an existing Client " + streamId);
- return null;
- }
-
- cache.put(rcm.getStreamid(), rcm);
-
- return rcm;
- } catch (Exception err) {
- log.error("[addClientListItem]", err);
- }
- return null;
- }
-
- @Override
- public Collection<Client> getClients() {
- return cache.getClients();
- }
-
- @Override
- public Collection<Client> getClientsWithServer() {
- return cache.getClientsWithServer();
- }
-
- @Override
- public Client getClientByStreamId(String streamId, Server server) {
- if (server == null) {
- server = serverUtil.getCurrentServer();
- }
- try {
- if (!cache.containsKey(server, streamId)) {
- log.debug("Tried to get a non existing Client " + streamId + " server " + server);
- return null;
- }
- return cache.get(server, streamId);
- } catch (Exception err) {
- log.error("[getClientByStreamId]", err);
- }
- return null;
- }
-
- @Override
- public Client getClientByPublicSID(String publicSID, Server server) {
- if (server == null) {
- server = serverUtil.getCurrentServer();
- }
- try {
- List<Client> list = cache.getClientsByPublicSID(server, publicSID);
- return list == null || list.isEmpty() ? null : list.get(0);
- } catch (Exception err) {
- log.error("[getClientByPublicSID]", err);
- }
- return null;
- }
-
- @Override
- public ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID) {
- try {
- for (Entry<Long,List<Client>> entry : cache.getClientsByPublicSID(publicSID).entrySet()) {
- for (Client rcl : entry.getValue()) {
- return new ClientSessionInfo(rcl, entry.getKey());
- }
- }
- } catch (Exception err) {
- log.error("[getClientByPublicSIDAnyServer]", err);
- }
- return null;
- }
-
- @Override
- public Client getClientByUserId(Long userId) {
- try {
- for (Client rcl : cache.getClientsByUserId(null, userId)) {
- if (rcl.isScreenClient()) {
- continue;
- }
-
- return rcl;
- }
- } catch (Exception err) {
- log.error("[getClientByUserId]", err);
- }
- return null;
- }
-
- @Override
- public boolean updateAVClientByStreamId(String streamId, Client rcm, Server server) {
- if (server == null) {
- server = serverUtil.getCurrentServer();
- }
- try {
- // get the corresponding user session object and update the settings
- Client rclUsual = getClientByPublicSID(rcm.getPublicSID(), server);
- if (rclUsual != null) {
- rclUsual.setBroadCastID(rcm.getBroadCastID());
- rclUsual.setAvsettings(rcm.getAvsettings());
- rclUsual.setVHeight(rcm.getVHeight());
- rclUsual.setVWidth(rcm.getVWidth());
- rclUsual.setVX(rcm.getVX());
- rclUsual.setVY(rcm.getVY());
- Client rclSaved = cache.get(server, rclUsual.getStreamid());
- if (rclSaved != null) {
- cache.put(rclUsual.getStreamid(), rclUsual);
- } else {
- log.debug("Tried to update a non existing Client " + rclUsual.getStreamid());
- }
- }
-
- updateClientByStreamId(streamId, rcm, false, server);
- return true;
- } catch (Exception err) {
- log.error("[updateAVClientByStreamId]", err);
- }
- return false;
- }
-
- @Override
- public boolean updateClientByStreamId(String streamId, Client rcm, boolean updateRoomCount, Server server) {
- if (server == null) {
- server = serverUtil.getCurrentServer();
- }
- try {
- Client rclSaved = cache.get(server, streamId);
-
- if (rclSaved != null) {
- cache.put(streamId, rcm);
- return true;
- } else {
- log.debug("Tried to update a non existing Client " + streamId);
- }
- } catch (Exception err) {
- log.error("[updateClientByStreamId]", err);
- }
- return false;
- }
-
- @Override
- public boolean removeClient(String streamId, Server server) {
- if (server == null) {
- server = serverUtil.getCurrentServer();
- }
- try {
- if (cache.containsKey(server,streamId)) {
- cache.remove(server,streamId);
- return true;
- } else {
- log.debug("Tried to remove a non existing Client " + streamId);
- }
- } catch (Exception err) {
- log.error("[removeClient]", err);
- }
- return false;
- }
-
- @Override
- public List<Client> getClientListByRoom(Long roomId) {
- List<Client> roomClientList = new ArrayList<>();
- try {
- for (Client rcl : cache.getClientsByRoomId(roomId)) {
- if (rcl.isScreenClient()) {
- continue;
- }
-
- // Only parse really those users out that are really a full session object
- // and no pseudo session object like the audio/video or screen
- // sharing connection
- roomClientList.add(rcl);
- }
- } catch (Exception err) {
- log.error("[getClientListByRoom]", err);
- }
- return roomClientList;
- }
-
- @Override
- public Collection<Client> getClientListByRoomAll(Long roomId) {
- try {
- return cache.getClientsByRoomId(roomId);
- } catch (Exception err) {
- log.error("[getClientListByRoomAll]", err);
- }
- return null;
- }
-
- @Override
- public List<Client> getCurrentModeratorByRoom(Long roomId) {
- List<Client> rclList = new LinkedList<>();
- List<Client> currentClients = this.getClientListByRoom(roomId);
- for (Client rcl : currentClients) {
- if (rcl.getIsMod()) {
- rclList.add(rcl);
- }
- }
- return rclList;
- }
-
- @Override
- public SearchResult<Client> getListByStartAndMax(int start, int max, String orderby, boolean asc) {
- SearchResult<Client> sResult = new SearchResult<>();
- sResult.setObjectName(Client.class.getName());
- sResult.setRecords(Long.valueOf(cache.size()));
- sResult.setResult(cache.getClientsWithServer());
- return sResult;
- }
-
- @Override
- public long getRecordingCount(long roomId) {
- List<Client> currentClients = this.getClientListByRoom(roomId);
- int numberOfRecordingUsers = 0;
- for (Client rcl : currentClients) {
- if (rcl.isStartRecording()) {
- numberOfRecordingUsers++;
- }
- }
- return numberOfRecordingUsers;
- }
-
- @Override
- public long getPublishingCount(long roomId) {
- List<Client> currentClients = this.getClientListByRoom(roomId);
- int numberOfPublishingUsers = 0;
- for (Client rcl : currentClients) {
- if (rcl.isStreamPublishStarted()) {
- numberOfPublishingUsers++;
- }
- }
- return numberOfPublishingUsers;
- }
-
- @Override
- public List<Long> getActiveRoomIdsByServer(Server server) {
- return cache.getRoomsIdsByServer(server == null ? serverUtil.getCurrentServer() : server);
- }
-
- @Override
- public String getSessionStatistics() {
- return cache.getDebugInformation(Arrays.asList(IClientPersistenceStore.DEBUG_DETAILS.SIZE));
- }
-
- @Override
- public void sessionStart() {
- // TODO Auto-generated method stub
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.core.session;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.UUID;
+
+import org.apache.openmeetings.core.session.store.IClientPersistenceStore;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.wicket.util.string.Strings;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Handle {@link Client} objects.
+ *
+ * Use a kind of decorator pattern to inject the {@link Server} into every call.
+ *
+ * @author sebawagner
+ *
+ */
+public class SessionManager implements ISessionManager {
+ protected static final Logger log = Red5LoggerFactory.getLogger(SessionManager.class, webAppRootKey);
+
+ @Autowired
+ private ServerUtil serverUtil;
+
+ /**
+ * Injected via Spring, needs a getter/setter because it can be configured
+ * Autowired will not suit here as there are multiple implementations of the
+ * {@link IClientPersistenceStore}
+ */
+ private IClientPersistenceStore cache;
+
+ public IClientPersistenceStore getCache() {
+ return cache;
+ }
+
+ public void setCache(IClientPersistenceStore cache) {
+ this.cache = cache;
+ }
+
+ @Override
+ public void clearCache() {
+ cache.clear();
+ }
+
+ @Override
+ public Client add(Client c, Server server) {
+ if (c == null) {
+ return null;
+ }
+ if (server == null) {
+ server = serverUtil.getCurrentServer();
+ }
+ c.setConnectedSince(new Date());
+ c.setRoomEnter(new Date());
+ if (Strings.isEmpty(c.getPublicSID())) {
+ c.setPublicSID(UUID.randomUUID().toString());
+ }
+ c.setServer(server);
+
+ if (cache.containsKey(null, c.getStreamid())) {
+ log.error("Tried to add an existing Client " + c.getStreamid());
+ return null;
+ }
+
+ cache.put(c.getStreamid(), c);
+ return c;
+ }
+
+ @Override
+ public Client addClientListItem(String streamId, String scopeName,
+ int remotePort, String remoteAddress, String swfUrl, Server server) {
+ if (server == null) {
+ server = serverUtil.getCurrentServer();
+ }
+ try {
+
+ // Store the Connection into a bean and add it to the HashMap
+ Client rcm = new Client();
+ rcm.setConnectedSince(new Date());
+ rcm.setStreamid(streamId);
+ rcm.setScope(scopeName);
+ rcm.setPublicSID(UUID.randomUUID().toString());
+ rcm.setServer(server);
+ rcm.setUserport(remotePort);
+ rcm.setUserip(remoteAddress);
+ rcm.setSwfurl(swfUrl);
+ rcm.setIsMod(false);
+ rcm.setCanDraw(false);
+
+ if (cache.containsKey(null, streamId)) {
+ log.error("Tried to add an existing Client " + streamId);
+ return null;
+ }
+
+ cache.put(rcm.getStreamid(), rcm);
+
+ return rcm;
+ } catch (Exception err) {
+ log.error("[addClientListItem]", err);
+ }
+ return null;
+ }
+
+ @Override
+ public Collection<Client> getClients() {
+ return cache.getClients();
+ }
+
+ @Override
+ public Collection<Client> getClientsWithServer() {
+ return cache.getClientsWithServer();
+ }
+
+ @Override
+ public Client getClientByStreamId(String streamId, Server server) {
+ if (server == null) {
+ server = serverUtil.getCurrentServer();
+ }
+ try {
+ if (!cache.containsKey(server, streamId)) {
+ log.debug("Tried to get a non existing Client " + streamId + " server " + server);
+ return null;
+ }
+ return cache.get(server, streamId);
+ } catch (Exception err) {
+ log.error("[getClientByStreamId]", err);
+ }
+ return null;
+ }
+
+ @Override
+ public Client getClientByPublicSID(String publicSID, Server server) {
+ if (server == null) {
+ server = serverUtil.getCurrentServer();
+ }
+ try {
+ List<Client> list = cache.getClientsByPublicSID(server, publicSID);
+ return list == null || list.isEmpty() ? null : list.get(0);
+ } catch (Exception err) {
+ log.error("[getClientByPublicSID]", err);
+ }
+ return null;
+ }
+
+ @Override
+ public ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID) {
+ try {
+ for (Entry<Long,List<Client>> entry : cache.getClientsByPublicSID(publicSID).entrySet()) {
+ for (Client rcl : entry.getValue()) {
+ return new ClientSessionInfo(rcl, entry.getKey());
+ }
+ }
+ } catch (Exception err) {
+ log.error("[getClientByPublicSIDAnyServer]", err);
+ }
+ return null;
+ }
+
+ @Override
+ public Client getClientByUserId(Long userId) {
+ try {
+ for (Client rcl : cache.getClientsByUserId(null, userId)) {
+ if (rcl.isScreenClient()) {
+ continue;
+ }
+
+ return rcl;
+ }
+ } catch (Exception err) {
+ log.error("[getClientByUserId]", err);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean updateAVClientByStreamId(String streamId, Client rcm, Server server) {
+ if (server == null) {
+ server = serverUtil.getCurrentServer();
+ }
+ try {
+ // get the corresponding user session object and update the settings
+ Client rclUsual = getClientByPublicSID(rcm.getPublicSID(), server);
+ if (rclUsual != null) {
+ rclUsual.setBroadCastID(rcm.getBroadCastID());
+ rclUsual.setAvsettings(rcm.getAvsettings());
+ rclUsual.setVHeight(rcm.getVHeight());
+ rclUsual.setVWidth(rcm.getVWidth());
+ rclUsual.setVX(rcm.getVX());
+ rclUsual.setVY(rcm.getVY());
+ Client rclSaved = cache.get(server, rclUsual.getStreamid());
+ if (rclSaved != null) {
+ cache.put(rclUsual.getStreamid(), rclUsual);
+ } else {
+ log.debug("Tried to update a non existing Client " + rclUsual.getStreamid());
+ }
+ }
+
+ updateClientByStreamId(streamId, rcm, false, server);
+ return true;
+ } catch (Exception err) {
+ log.error("[updateAVClientByStreamId]", err);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean updateClientByStreamId(String streamId, Client rcm, boolean updateRoomCount, Server server) {
+ if (server == null) {
+ server = serverUtil.getCurrentServer();
+ }
+ try {
+ Client rclSaved = cache.get(server, streamId);
+
+ if (rclSaved != null) {
+ cache.put(streamId, rcm);
+ return true;
+ } else {
+ log.debug("Tried to update a non existing Client " + streamId);
+ }
+ } catch (Exception err) {
+ log.error("[updateClientByStreamId]", err);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean removeClient(String streamId, Server server) {
+ if (server == null) {
+ server = serverUtil.getCurrentServer();
+ }
+ try {
+ if (cache.containsKey(server,streamId)) {
+ cache.remove(server,streamId);
+ return true;
+ } else {
+ log.debug("Tried to remove a non existing Client " + streamId);
+ }
+ } catch (Exception err) {
+ log.error("[removeClient]", err);
+ }
+ return false;
+ }
+
+ @Override
+ public List<Client> getClientListByRoom(Long roomId) {
+ List<Client> roomClientList = new ArrayList<>();
+ try {
+ for (Client rcl : cache.getClientsByRoomId(roomId)) {
+ if (rcl.isScreenClient()) {
+ continue;
+ }
+
+ // Only parse really those users out that are really a full session object
+ // and no pseudo session object like the audio/video or screen
+ // sharing connection
+ roomClientList.add(rcl);
+ }
+ } catch (Exception err) {
+ log.error("[getClientListByRoom]", err);
+ }
+ return roomClientList;
+ }
+
+ @Override
+ public Collection<Client> getClientListByRoomAll(Long roomId) {
+ try {
+ return cache.getClientsByRoomId(roomId);
+ } catch (Exception err) {
+ log.error("[getClientListByRoomAll]", err);
+ }
+ return null;
+ }
+
+ @Override
+ public List<Client> getCurrentModeratorByRoom(Long roomId) {
+ List<Client> rclList = new LinkedList<>();
+ List<Client> currentClients = this.getClientListByRoom(roomId);
+ for (Client rcl : currentClients) {
+ if (rcl.getIsMod()) {
+ rclList.add(rcl);
+ }
+ }
+ return rclList;
+ }
+
+ @Override
+ public SearchResult<Client> getListByStartAndMax(int start, int max, String orderby, boolean asc) {
+ SearchResult<Client> sResult = new SearchResult<>();
+ sResult.setObjectName(Client.class.getName());
+ sResult.setRecords(Long.valueOf(cache.size()));
+ sResult.setResult(cache.getClientsWithServer());
+ return sResult;
+ }
+
+ @Override
+ public long getRecordingCount(long roomId) {
+ List<Client> currentClients = this.getClientListByRoom(roomId);
+ int numberOfRecordingUsers = 0;
+ for (Client rcl : currentClients) {
+ if (rcl.isStartRecording()) {
+ numberOfRecordingUsers++;
+ }
+ }
+ return numberOfRecordingUsers;
+ }
+
+ @Override
+ public long getPublishingCount(long roomId) {
+ List<Client> currentClients = this.getClientListByRoom(roomId);
+ int numberOfPublishingUsers = 0;
+ for (Client rcl : currentClients) {
+ if (rcl.isStreamPublishStarted()) {
+ numberOfPublishingUsers++;
+ }
+ }
+ return numberOfPublishingUsers;
+ }
+
+ @Override
+ public List<Long> getActiveRoomIdsByServer(Server server) {
+ return cache.getRoomsIdsByServer(server == null ? serverUtil.getCurrentServer() : server);
+ }
+
+ @Override
+ public String getSessionStatistics() {
+ return cache.getDebugInformation(Arrays.asList(IClientPersistenceStore.DEBUG_DETAILS.SIZE));
+ }
+
+ @Override
+ public void sessionStart() {
+ // TODO Auto-generated method stub
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-core/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/site/site.xml b/openmeetings-core/src/site/site.xml
index c26954e..0d9f35c 100644
--- a/openmeetings-core/src/site/site.xml
+++ b/openmeetings-core/src/site/site.xml
@@ -1,40 +1,40 @@
-<?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.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
- name="Apache OpenMeetings Project">
-
- <body>
- <menu ref="parent"/>
- <menu name="Project">
- <item name="About" href="/index.html" />
- <item name="Info" href="/project-info.html" />
- <item name="Summary" href="/project-summary.html" />
- <item name="License" href="/license.html" />
- <item name="Dependencies" href="/dependencies.html" />
- <item name="Dependency Convergence" href="/dependency-convergence.html" />
- <item name="RAT Report" href="/rat-report.html" />
- <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
- </menu>
- </body>
- <custom>
- <reflowSkin>
- <bottomNav maxSpan="12">
- <column>Parent Project</column>
- <column>Project</column>
- </bottomNav>
- </reflowSkin>
- </custom>
-</project>
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+ name="Apache OpenMeetings Project">
+
+ <body>
+ <menu ref="parent"/>
+ <menu name="Project">
+ <item name="About" href="/index.html" />
+ <item name="Info" href="/project-info.html" />
+ <item name="Summary" href="/project-summary.html" />
+ <item name="License" href="/license.html" />
+ <item name="Dependencies" href="/dependencies.html" />
+ <item name="Dependency Convergence" href="/dependency-convergence.html" />
+ <item name="RAT Report" href="/rat-report.html" />
+ <item name="JavaDoc" href="/apidocs/index.html" target="_blank" />
+ </menu>
+ </body>
+ <custom>
+ <reflowSkin>
+ <bottomNav maxSpan="12">
+ <column>Parent Project</column>
+ <column>Project</column>
+ </bottomNav>
+ </reflowSkin>
+ </custom>
+</project>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
index 4247263..3a2a886 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
@@ -1,172 +1,172 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.test.rtmp;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.red5.client.net.rtmp.ClientExceptionHandler;
-import org.red5.client.net.rtmp.INetStreamEventHandler;
-import org.red5.client.net.rtmp.RTMPClient;
-import org.red5.server.api.service.IPendingServiceCall;
-import org.red5.server.api.service.IPendingServiceCallback;
-import org.red5.server.net.rtmp.event.Notify;
-
-public class LoadTestRtmpClient extends RTMPClient implements IPendingServiceCallback, INetStreamEventHandler, ClientExceptionHandler {
-
- private class CallObject {
- Date started;
- Date ended;
-
- public CallObject(Date started) {
- super();
- this.started = started;
- }
-
- public Date getStarted() {
- return started;
- }
-
- public Date getEnded() {
- return ended;
- }
-
- public void setEnded(Date ended) {
- this.ended = ended;
- }
- }
-
- private int counterCalls = 0; // a call is always 2 steps
- private Map<Integer, CallObject> calls = new HashMap<>();
- private boolean isConnected = false;
- private final int instanceId;
-
- public LoadTestRtmpClient(int instanceId) {
- this.instanceId = instanceId;
- }
-
- public boolean performCall() {
-
- // System.err.println("performCall " + isConnected);
-
- if (!isConnected) {
- return false;
- }
-
- if (counterCalls % 2 == 0) {
-
- if (counterCalls > 10) {
-
- return true;
-
- }
-
- System.err.println("Rest o do new call " + counterCalls);
- counterCalls++;
-
- Map<String, Integer> map = new HashMap<>();
- map.put("instanceId", instanceId);
- map.put("count", counterCalls);
- calls.put(counterCalls, new CallObject(new Date()));
- invoke("loadTestSyncMessage", new Object[] {"syncMessageToCurrentScopeResult", map, true }, this);
-
- } else {
- System.err.println("Call running " + counterCalls);
- }
-
-
-
- return false;
- }
-
- public double getAverageTime() {
- long overallTime = 0L;
-
- for (Entry<Integer, CallObject> tCallObjectEntry : calls.entrySet()) {
-
- long deltaTime = tCallObjectEntry.getValue().getEnded().getTime()
- - tCallObjectEntry.getValue().getStarted().getTime();
-
- // System.err.println("Key " + tCallObjectEntry.getKey()
- // + "deltaTime " + deltaTime);
-
- overallTime += deltaTime;
-
- }
-
- double averageTime = Long.valueOf(overallTime).doubleValue()
- / Integer.valueOf(calls.size()).doubleValue();
-
- return averageTime;
- }
-
- @Override
- public void resultReceived(IPendingServiceCall call) {
- String method = call == null ? null : call.getServiceMethodName();
- System.err.println("method "+method);
- if (method == null) {
- return;
- }
- if ("connect".equals(method)) {
- isConnected = true;
- }
-
- if ("loadTestSyncMessage".equals(method)) {
-
- CallObject tCallObject = calls.get(counterCalls);
- if (tCallObject == null) {
-
- for (Entry<Integer, CallObject> tCallObjectEntry : calls.entrySet()) {
-
- System.err.println("Key " + tCallObjectEntry.getKey()
- + "tCallObjectEntry "
- + tCallObjectEntry.getValue().getStarted());
-
- }
-
- throw new RuntimeException(
- "tCallObject is null currentCountReturn "
- + counterCalls + " list size "
- + calls.size());
- }
- tCallObject.setEnded(new Date());
- calls.put(counterCalls, tCallObject);
-
- System.err.println("Call received " + counterCalls
- + " instanceId: " + instanceId);
-
- counterCalls++;
- }
-
- }
-
-
- @Override
- public void onStreamEvent(Notify notify) {
- // TODO Auto-generated method stub
-
- }
-
- public int getNumberOfCalls() {
- return calls.size();
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.test.rtmp;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.red5.client.net.rtmp.ClientExceptionHandler;
+import org.red5.client.net.rtmp.INetStreamEventHandler;
+import org.red5.client.net.rtmp.RTMPClient;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.net.rtmp.event.Notify;
+
+public class LoadTestRtmpClient extends RTMPClient implements IPendingServiceCallback, INetStreamEventHandler, ClientExceptionHandler {
+
+ private class CallObject {
+ Date started;
+ Date ended;
+
+ public CallObject(Date started) {
+ super();
+ this.started = started;
+ }
+
+ public Date getStarted() {
+ return started;
+ }
+
+ public Date getEnded() {
+ return ended;
+ }
+
+ public void setEnded(Date ended) {
+ this.ended = ended;
+ }
+ }
+
+ private int counterCalls = 0; // a call is always 2 steps
+ private Map<Integer, CallObject> calls = new HashMap<>();
+ private boolean isConnected = false;
+ private final int instanceId;
+
+ public LoadTestRtmpClient(int instanceId) {
+ this.instanceId = instanceId;
+ }
+
+ public boolean performCall() {
+
+ // System.err.println("performCall " + isConnected);
+
+ if (!isConnected) {
+ return false;
+ }
+
+ if (counterCalls % 2 == 0) {
+
+ if (counterCalls > 10) {
+
+ return true;
+
+ }
+
+ System.err.println("Rest o do new call " + counterCalls);
+ counterCalls++;
+
+ Map<String, Integer> map = new HashMap<>();
+ map.put("instanceId", instanceId);
+ map.put("count", counterCalls);
+ calls.put(counterCalls, new CallObject(new Date()));
+ invoke("loadTestSyncMessage", new Object[] {"syncMessageToCurrentScopeResult", map, true }, this);
+
+ } else {
+ System.err.println("Call running " + counterCalls);
+ }
+
+
+
+ return false;
+ }
+
+ public double getAverageTime() {
+ long overallTime = 0L;
+
+ for (Entry<Integer, CallObject> tCallObjectEntry : calls.entrySet()) {
+
+ long deltaTime = tCallObjectEntry.getValue().getEnded().getTime()
+ - tCallObjectEntry.getValue().getStarted().getTime();
+
+ // System.err.println("Key " + tCallObjectEntry.getKey()
+ // + "deltaTime " + deltaTime);
+
+ overallTime += deltaTime;
+
+ }
+
+ double averageTime = Long.valueOf(overallTime).doubleValue()
+ / Integer.valueOf(calls.size()).doubleValue();
+
+ return averageTime;
+ }
+
+ @Override
+ public void resultReceived(IPendingServiceCall call) {
+ String method = call == null ? null : call.getServiceMethodName();
+ System.err.println("method "+method);
+ if (method == null) {
+ return;
+ }
+ if ("connect".equals(method)) {
+ isConnected = true;
+ }
+
+ if ("loadTestSyncMessage".equals(method)) {
+
+ CallObject tCallObject = calls.get(counterCalls);
+ if (tCallObject == null) {
+
+ for (Entry<Integer, CallObject> tCallObjectEntry : calls.entrySet()) {
+
+ System.err.println("Key " + tCallObjectEntry.getKey()
+ + "tCallObjectEntry "
+ + tCallObjectEntry.getValue().getStarted());
+
+ }
+
+ throw new RuntimeException(
+ "tCallObject is null currentCountReturn "
+ + counterCalls + " list size "
+ + calls.size());
+ }
+ tCallObject.setEnded(new Date());
+ calls.put(counterCalls, tCallObject);
+
+ System.err.println("Call received " + counterCalls
+ + " instanceId: " + instanceId);
+
+ counterCalls++;
+ }
+
+ }
+
+
+ @Override
+ public void onStreamEvent(Notify notify) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public int getNumberOfCalls() {
+ return calls.size();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
index fd95155..b68aa0f 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
@@ -1,92 +1,92 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.test.rtmp;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-public class SimulateLoad extends Thread {
- private static final Logger log = Red5LoggerFactory.getLogger(SimulateLoad.class, webAppRootKey);
-
- private LoadTestRtmpClient loadTestRtmpClient;
- private boolean testRunning = true;
-
- public double getAverageTime() {
- return loadTestRtmpClient.getAverageTime();
- }
-
- public boolean isTestRunning() {
- return testRunning;
- }
-
- public static void main(String... args) {
- try {
- if (args.length != 4) {
- throw new RuntimeException("4 args needed, host, port, context, instanceId");
- }
- for (String arg : args) {
- System.err.println("arg: " + arg);
- }
- SimulateLoad simulateLoad = new SimulateLoad(args[0], Integer
- .valueOf(args[1]).intValue(), args[2], Integer.valueOf(
- args[3]).intValue());
- simulateLoad.start();
- System.err.println("started ");
-
- } catch (Exception er) {
- log.error("Error", er);
- }
- }
-
- public SimulateLoad(String host, int port, String applicationContext,
- int instanceId) {
- super();
-
- loadTestRtmpClient = new LoadTestRtmpClient(instanceId);
- loadTestRtmpClient.connect(host, port, applicationContext,
- loadTestRtmpClient);
- }
-
- @Override
- public void run() {
- try {
-
- System.err.println("######### start client");
-
- while (testRunning) {
- testRunning = !loadTestRtmpClient.performCall();
- try {
- Thread.sleep(200);
- } catch (InterruptedException e) {
- log.error("Error", e);
- }
- }
-
- } catch (Exception e) {
- log.error("Error", e);
- }
- }
-
- public int getNumberOfCalls() {
- return loadTestRtmpClient.getNumberOfCalls();
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.test.rtmp;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class SimulateLoad extends Thread {
+ private static final Logger log = Red5LoggerFactory.getLogger(SimulateLoad.class, webAppRootKey);
+
+ private LoadTestRtmpClient loadTestRtmpClient;
+ private boolean testRunning = true;
+
+ public double getAverageTime() {
+ return loadTestRtmpClient.getAverageTime();
+ }
+
+ public boolean isTestRunning() {
+ return testRunning;
+ }
+
+ public static void main(String... args) {
+ try {
+ if (args.length != 4) {
+ throw new RuntimeException("4 args needed, host, port, context, instanceId");
+ }
+ for (String arg : args) {
+ System.err.println("arg: " + arg);
+ }
+ SimulateLoad simulateLoad = new SimulateLoad(args[0], Integer
+ .valueOf(args[1]).intValue(), args[2], Integer.valueOf(
+ args[3]).intValue());
+ simulateLoad.start();
+ System.err.println("started ");
+
+ } catch (Exception er) {
+ log.error("Error", er);
+ }
+ }
+
+ public SimulateLoad(String host, int port, String applicationContext,
+ int instanceId) {
+ super();
+
+ loadTestRtmpClient = new LoadTestRtmpClient(instanceId);
+ loadTestRtmpClient.connect(host, port, applicationContext,
+ loadTestRtmpClient);
+ }
+
+ @Override
+ public void run() {
+ try {
+
+ System.err.println("######### start client");
+
+ while (testRunning) {
+ testRunning = !loadTestRtmpClient.performCall();
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException e) {
+ log.error("Error", e);
+ }
+ }
+
+ } catch (Exception e) {
+ log.error("Error", e);
+ }
+ }
+
+ public int getNumberOfCalls() {
+ return loadTestRtmpClient.getNumberOfCalls();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/IDataProviderDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/IDataProviderDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/IDataProviderDao.java
index f82f93b..e55e270 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/IDataProviderDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/IDataProviderDao.java
@@ -1,94 +1,94 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.dao;
-
-import java.util.List;
-
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-
-/**
- * General interface to perform CRUD operations on entities
- *
- * @author solomax, swagner
- *
- * @param <T>
- */
-public interface IDataProviderDao<T extends IDataProviderEntity> {
-
- /**
- * Get an instance of an {@link T}
- *
- * @param id - id of instance to retrieve
- * @return instance with the id gived
- */
- T get(Long id);
-
- T get(long id);
-
- /**
- * Get a list of instances of {@link T}
- *
- * @param start - the start to range to retrieve
- * @param count - maximum instance count to retrieve
- * @return list of instances in the range specified
- */
- List<T> get(int start, int count);
-
- /**
- * Get a list of instances of {@link T}
- *
- * @param search - string search criteria to filter entities
- * @param start - the start to range to retrieve
- * @param count - maximum instance count to retrieve
- * @param order - column and sort order
- * @return list of instances in the range specified
- */
- List<T> get(String search, int start, int count, String order);
-
- /**
- * Count the number of instances of {@link T}
- *
- * @return count of instances
- */
- long count();
-
- /**
- * Count the number of instances of {@link T}
- *
- * @param search - string search criteria to filter entities
- * @return count of instances satisfying given search criteria
- */
- long count(String search);
-
- /**
- * Update an instance of {@link T}
- *
- * @param entity - entity to be updated
- * @param userId - user performed update
- */
- T update(T entity, Long userId);
-
- /**
- * Delete an instance of {@link T}
- *
- * @param entity - entity to be deleted
- * @param userId - user performed delete
- */
- void delete(T entity, Long userId);
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.dao;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+
+/**
+ * General interface to perform CRUD operations on entities
+ *
+ * @author solomax, swagner
+ *
+ * @param <T>
+ */
+public interface IDataProviderDao<T extends IDataProviderEntity> {
+
+ /**
+ * Get an instance of an {@link T}
+ *
+ * @param id - id of instance to retrieve
+ * @return instance with the id gived
+ */
+ T get(Long id);
+
+ T get(long id);
+
+ /**
+ * Get a list of instances of {@link T}
+ *
+ * @param start - the start to range to retrieve
+ * @param count - maximum instance count to retrieve
+ * @return list of instances in the range specified
+ */
+ List<T> get(int start, int count);
+
+ /**
+ * Get a list of instances of {@link T}
+ *
+ * @param search - string search criteria to filter entities
+ * @param start - the start to range to retrieve
+ * @param count - maximum instance count to retrieve
+ * @param order - column and sort order
+ * @return list of instances in the range specified
+ */
+ List<T> get(String search, int start, int count, String order);
+
+ /**
+ * Count the number of instances of {@link T}
+ *
+ * @return count of instances
+ */
+ long count();
+
+ /**
+ * Count the number of instances of {@link T}
+ *
+ * @param search - string search criteria to filter entities
+ * @return count of instances satisfying given search criteria
+ */
+ long count(String search);
+
+ /**
+ * Update an instance of {@link T}
+ *
+ * @param entity - entity to be updated
+ * @param userId - user performed update
+ */
+ T update(T entity, Long userId);
+
+ /**
+ * Delete an instance of {@link T}
+ *
+ * @param entity - entity to be deleted
+ * @param userId - user performed delete
+ */
+ void delete(T entity, Long userId);
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
index 2f62dbb..aed66db 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
@@ -1,135 +1,135 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.dao.basic;
-
-import java.util.Calendar;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-
-import org.apache.openmeetings.db.dao.IDataProviderDao;
-import org.apache.openmeetings.db.entity.basic.MailMessage;
-import org.apache.openmeetings.db.entity.basic.MailMessage.Status;
-import org.apache.wicket.util.string.Strings;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public class MailMessageDao implements IDataProviderDao<MailMessage> {
- @PersistenceContext
- private EntityManager em;
-
- @Override
- public MailMessage get(long id) {
- return get(Long.valueOf(id));
- }
-
- @Override
- public MailMessage get(Long id) {
- return em.createNamedQuery("getMailMessageById", MailMessage.class).setParameter("id", id).getSingleResult();
- }
-
- @Override
- public List<MailMessage> get(int start, int count) {
- return em.createNamedQuery("getMailMessages", MailMessage.class)
- .setFirstResult(start).setMaxResults(count).getResultList();
- }
-
- public List<MailMessage> get(int start, int count, Status status) {
- return em.createNamedQuery("getMailMessagesByStatus", MailMessage.class).setParameter("status", status)
- .setFirstResult(start).setMaxResults(count).getResultList();
- }
-
- private <T> TypedQuery<T> getQuery(boolean isCount, String search, String order, Class<T> clazz) {
- StringBuilder sb = new StringBuilder("SELECT ");
- sb.append(isCount ? "COUNT(m)" : "m")
- .append(" FROM MailMessage m");
- if (!Strings.isEmpty(search)) {
- sb.append(" WHERE m.recipients LIKE :search OR m.subject LIKE :search OR m.body LIKE :search OR m.lastError LIKE :search");
- }
- if (!Strings.isEmpty(order)) {
- sb.append(" ORDER BY m.").append(order);
- }
- TypedQuery<T> q = em.createQuery(sb.toString(), clazz);
- if (!Strings.isEmpty(search)) {
- q.setParameter("search", String.format("%%%s%%", search));
- }
- return q;
- }
-
- @Override
- public List<MailMessage> get(String search, int start, int count, String order) {
- return getQuery(false, search, order, MailMessage.class).setFirstResult(start).setMaxResults(count).getResultList();
- }
-
- @Override
- public long count() {
- return em.createNamedQuery("countMailMessages", Long.class).getSingleResult();
- }
-
- @Override
- public long count(String search) {
- return getQuery(true, search, null, Long.class).getSingleResult();
- }
-
- public void resetSendingStatus(Calendar date) {
- em.createNamedQuery("resetMailStatusByDate")
- .setParameter("noneStatus", Status.NONE)
- .setParameter("sendingStatus", Status.SENDING)
- .setParameter("date", date)
- .executeUpdate();
- }
-
- public void resetSendingStatus(Long id) {
- em.createNamedQuery("resetMailStatusById")
- .setParameter("noneStatus", Status.NONE)
- .setParameter("id", id)
- .executeUpdate();
- }
-
- @Override
- public MailMessage update(MailMessage m, Long userId) {
- if (m.getId() == null) {
- m.setInserted(Calendar.getInstance());
- em.persist(m);
- } else {
- m.setUpdated(Calendar.getInstance());
- m = em.merge(m);
- }
- return m;
- }
-
- @Override
- public void delete(MailMessage m, Long userId) {
- if (m != null) {
- delete(m.getId(), userId);
- }
- }
-
- /**
- * @param id - entity id
- * @param userId - unused
- */
- public void delete(Long id, Long userId) {
- if (id != null) {
- em.remove(get(id));
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.dao.basic;
+
+import java.util.Calendar;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.basic.MailMessage;
+import org.apache.openmeetings.db.entity.basic.MailMessage.Status;
+import org.apache.wicket.util.string.Strings;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class MailMessageDao implements IDataProviderDao<MailMessage> {
+ @PersistenceContext
+ private EntityManager em;
+
+ @Override
+ public MailMessage get(long id) {
+ return get(Long.valueOf(id));
+ }
+
+ @Override
+ public MailMessage get(Long id) {
+ return em.createNamedQuery("getMailMessageById", MailMessage.class).setParameter("id", id).getSingleResult();
+ }
+
+ @Override
+ public List<MailMessage> get(int start, int count) {
+ return em.createNamedQuery("getMailMessages", MailMessage.class)
+ .setFirstResult(start).setMaxResults(count).getResultList();
+ }
+
+ public List<MailMessage> get(int start, int count, Status status) {
+ return em.createNamedQuery("getMailMessagesByStatus", MailMessage.class).setParameter("status", status)
+ .setFirstResult(start).setMaxResults(count).getResultList();
+ }
+
+ private <T> TypedQuery<T> getQuery(boolean isCount, String search, String order, Class<T> clazz) {
+ StringBuilder sb = new StringBuilder("SELECT ");
+ sb.append(isCount ? "COUNT(m)" : "m")
+ .append(" FROM MailMessage m");
+ if (!Strings.isEmpty(search)) {
+ sb.append(" WHERE m.recipients LIKE :search OR m.subject LIKE :search OR m.body LIKE :search OR m.lastError LIKE :search");
+ }
+ if (!Strings.isEmpty(order)) {
+ sb.append(" ORDER BY m.").append(order);
+ }
+ TypedQuery<T> q = em.createQuery(sb.toString(), clazz);
+ if (!Strings.isEmpty(search)) {
+ q.setParameter("search", String.format("%%%s%%", search));
+ }
+ return q;
+ }
+
+ @Override
+ public List<MailMessage> get(String search, int start, int count, String order) {
+ return getQuery(false, search, order, MailMessage.class).setFirstResult(start).setMaxResults(count).getResultList();
+ }
+
+ @Override
+ public long count() {
+ return em.createNamedQuery("countMailMessages", Long.class).getSingleResult();
+ }
+
+ @Override
+ public long count(String search) {
+ return getQuery(true, search, null, Long.class).getSingleResult();
+ }
+
+ public void resetSendingStatus(Calendar date) {
+ em.createNamedQuery("resetMailStatusByDate")
+ .setParameter("noneStatus", Status.NONE)
+ .setParameter("sendingStatus", Status.SENDING)
+ .setParameter("date", date)
+ .executeUpdate();
+ }
+
+ public void resetSendingStatus(Long id) {
+ em.createNamedQuery("resetMailStatusById")
+ .setParameter("noneStatus", Status.NONE)
+ .setParameter("id", id)
+ .executeUpdate();
+ }
+
+ @Override
+ public MailMessage update(MailMessage m, Long userId) {
+ if (m.getId() == null) {
+ m.setInserted(Calendar.getInstance());
+ em.persist(m);
+ } else {
+ m.setUpdated(Calendar.getInstance());
+ m = em.merge(m);
+ }
+ return m;
+ }
+
+ @Override
+ public void delete(MailMessage m, Long userId) {
+ if (m != null) {
+ delete(m.getId(), userId);
+ }
+ }
+
+ /**
+ * @param id - entity id
+ * @param userId - unused
+ */
+ public void delete(Long id, Long userId) {
+ if (id != null) {
+ em.remove(get(id));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
index 4a51331..efcdaaa 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
@@ -1,321 +1,321 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.db.dao.label;
-
-import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.InvalidPropertiesFormatException;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.Predicate;
-import org.apache.openmeetings.db.dao.IDataProviderDao;
-import org.apache.openmeetings.db.entity.label.StringLabel;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.XmlExport;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
-import org.apache.wicket.util.string.Strings;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-/**
- *
- * CRUD operations for {@link StringLabel}
- *
- * @author solomax, swagner
- *
- */
-public class LabelDao implements IDataProviderDao<StringLabel>{
- private static final Logger log = Red5LoggerFactory.getLogger(LabelDao.class, webAppRootKey);
- private static final String ENTRY_ELEMENT = "entry";
- private static final String KEY_ATTR = "key";
- public static final String APP_RESOURCES_EN = "Application.properties.xml";
- public static final String APP_RESOURCES = "Application_%s.properties.xml";
- public static final LinkedHashMap<Long, Locale> languages = new LinkedHashMap<>(); //TODO hide it and return unmodifiable map
- public static final ConcurrentHashMap<Locale, List<StringLabel>> labelCache = new ConcurrentHashMap<>();
- public static final Set<String> keys = new HashSet<>();
- private static Class<?> APP = null;
-
- public List<Map<String, Object>> getStrings(Long language_id, int start, int count) {
- List<Map<String, Object>> result = new ArrayList<>();
- for (int i = 0; i < count; ++i) {
- Map<String, Object> map = new HashMap<>();
- map.put("id", start + i);
- map.put("value", getString(start + i, language_id));
- result.add(map);
- }
- return result;
- }
-
- private static void storeLanguages() throws Exception {
- Document d = XmlExport.createDocument();
- Element r = XmlExport.createRoot(d, "language");
- for (Map.Entry<Long, Locale> e : languages.entrySet()) {
- r.addElement("lang").addAttribute("id", "" + e.getKey()).addAttribute("code", e.getValue().toLanguageTag());
- }
- XmlExport.toXml(getLangFile(), d);
- }
-
- public static void add(Locale l) throws Exception {
- long id = 0L;
- for (Map.Entry<Long, Locale> e : languages.entrySet()) {
- id = e.getKey();
- }
- languages.put(id + 1, l);
- storeLanguages();
- labelCache.put(l, new ArrayList<StringLabel>());
- }
-
- public String getString(long fieldValuesId, long langId) {
- return ensureApplication(langId).getOmString(fieldValuesId, langId);
- }
-
- public String getString(String key, long langId) {
- return ensureApplication(langId).getOmString(key, langId);
- }
-
- private static File getLangFile() {
- return new File(OmFileHelper.getLanguagesDir(), OmFileHelper.nameOfLanguageFile);
- }
-
- public static synchronized Class<?> getAppClass() throws ClassNotFoundException {
- if (APP == null) {
- //FIXME HACK to resolve package dependencies
- APP = Class.forName("org.apache.openmeetings.web.app.Application");
- }
- return APP;
- }
-
- public static void initLanguageMap() {
- SAXReader reader = new SAXReader();
- try {
- getAppClass();
- Document document = reader.read(getLangFile());
- Element root = document.getRootElement();
- languages.clear();
- for (@SuppressWarnings("unchecked")Iterator<Element> it = root.elementIterator("lang"); it.hasNext();) {
- Element item = it.next();
- Long id = Long.valueOf(item.attributeValue("id"));
- String code = item.attributeValue("code");
- if (id == 3L) {
- continue;
- }
- languages.put(id, Locale.forLanguageTag(code));
- }
- } catch (Exception e) {
- log.error("Error while building language map");
- }
- }
-
- public static String getLabelFileName(Locale l) {
- String name = APP_RESOURCES_EN;
- if (!Locale.ENGLISH.equals(l)) {
- name = String.format(APP_RESOURCES, l.toLanguageTag().replace('-', '_'));
- }
- return name;
- }
-
- private static void storeLabels(Locale l) throws Exception {
- Document d = XmlExport.createDocument();
- Element r = XmlExport.createRoot(d);
- List<StringLabel> labels = labelCache.get(l);
- for (StringLabel sl : labels) {
- r.addElement(ENTRY_ELEMENT).addAttribute(KEY_ATTR, sl.getKey()).addCDATA(sl.getValue());
- }
- URL u = APP.getResource(getLabelFileName(l));
- XmlExport.toXml(new File(u.toURI()), d);
- }
-
- public static void upload(Locale l, InputStream is) throws Exception {
- List<StringLabel> labels = getLabels(is);
- URL u = APP.getResource(getLabelFileName(Locale.ENGLISH)); //get the URL of existing resource
- File el = new File(u.toURI());
- File f = new File(el.getParentFile(), getLabelFileName(l));
- if (!f.exists()) {
- f.createNewFile();
- }
- labelCache.put(l, labels);
- storeLabels(l);
- }
-
- private static List<StringLabel> getLabels(Locale l) {
- List<StringLabel> labels = new ArrayList<>();
- try (InputStream is = APP.getResourceAsStream(getLabelFileName(l))) {
- labels = getLabels(is);
- } catch (Exception e) {
- log.error("Error reading resources document", e);
- }
- return labels;
- }
-
- private static List<StringLabel> getLabels(InputStream is) throws InvalidPropertiesFormatException, IOException {
- final List<StringLabel> labels = new ArrayList<>();
- Properties props = new Properties();
- props.loadFromXML(is);
- props.forEach((k, v) -> labels.add(new StringLabel((String)k, (String)v)));
- return labels;
- }
-
- private static List<StringLabel> getLabels(Locale l, final String search) {
- if (!labelCache.containsKey(l)) {
- List<StringLabel> ll = getLabels(l);
- if (ll != null) {
- labelCache.putIfAbsent(l, ll);
- }
- }
- List<StringLabel> result = new ArrayList<>(labelCache.containsKey(l) ? labelCache.get(l) : new ArrayList<StringLabel>());
- if (!Strings.isEmpty(search)) {
- CollectionUtils.filter(result, new Predicate<StringLabel>() {
- @Override
- public boolean evaluate(StringLabel o) {
- return o != null && (o.getKey().contains(search) || o.getValue().contains(search));
- }
- });
- }
- return result;
- }
-
- @Override
- public StringLabel get(long id) {
- throw new RuntimeException("Should not be used");
- }
-
- @Override
- public StringLabel get(Long id) {
- throw new RuntimeException("Should not be used");
- }
-
- @Override
- public List<StringLabel> get(int start, int count) {
- throw new RuntimeException("Should not be used");
- }
-
- @Override
- public List<StringLabel> get(String search, int start, int count, String order) {
- throw new RuntimeException("Should not be used");
- }
-
- public List<StringLabel> get(Locale l, final String search, int start, int count, final SortParam<String> sort) {
- List<StringLabel> result = getLabels(l, search);
- if (sort != null) {
- Collections.sort(result, new Comparator<StringLabel>() {
- @Override
- public int compare(StringLabel o1, StringLabel o2) {
- int val = 0;
- if (KEY_ATTR.equals(sort.getProperty())) {
- try {
- int i1 = Integer.parseInt(o1.getKey()), i2 = Integer.parseInt(o2.getKey());
- val = i1 - i2;
- } catch (Exception e) {
- val = o1.getKey().compareTo(o2.getKey());
- }
- } else {
- val = o1.getValue().compareTo(o2.getValue());
- }
- return (sort.isAscending() ? 1 : -1) * val;
- }
- });
- }
- return result.subList(start, start + count > result.size() ? result.size() : start + count);
- }
-
- @Override
- public long count() {
- throw new RuntimeException("Should not be used");
- }
-
- @Override
- public long count(String search) {
- throw new RuntimeException("Should not be used");
- }
-
- public long count(Locale l, final String search) {
- return getLabels(l, search).size();
- }
-
- @Override
- public StringLabel update(StringLabel entity, Long userId) {
- throw new RuntimeException("Should not be used");
- }
-
- public StringLabel update(Locale l, StringLabel entity) throws Exception {
- List<StringLabel> labels = labelCache.get(l);
- if (!labels.contains(entity)) {
- labels.add(entity);
- keys.add(entity.getKey());
- }
- storeLabels(l);
- return entity;
- }
-
- @Override
- public void delete(StringLabel entity, Long userId) {
- throw new RuntimeException("Should not be used");
- }
-
- public void delete(Locale l, StringLabel entity) throws Exception {
- List<StringLabel> labels = labelCache.get(l);
- if (labels.contains(entity)) {
- labels.remove(entity);
- keys.remove(entity.getKey());
- storeLabels(l);
- }
- }
-
- public static void delete(Locale l) {
- for (Map.Entry<Long, Locale> e : languages.entrySet()) {
- if (e.getValue().equals(l)) {
- languages.remove(e.getKey());
- break;
- }
- }
- labelCache.remove(l);
- try {
- URL u = APP.getResource(getLabelFileName(l));
- if (u != null) {
- File f = new File(u.toURI());
- if (f.exists()) {
- f.delete();
- }
- }
- } catch (Exception e) {
- log.error("Unexpected error while deleting language", e);
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.db.dao.label;
+
+import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.InvalidPropertiesFormatException;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.label.StringLabel;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.XmlExport;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
+import org.apache.wicket.util.string.Strings;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ *
+ * CRUD operations for {@link StringLabel}
+ *
+ * @author solomax, swagner
+ *
+ */
+public class LabelDao implements IDataProviderDao<StringLabel>{
+ private static final Logger log = Red5LoggerFactory.getLogger(LabelDao.class, webAppRootKey);
+ private static final String ENTRY_ELEMENT = "entry";
+ private static final String KEY_ATTR = "key";
+ public static final String APP_RESOURCES_EN = "Application.properties.xml";
+ public static final String APP_RESOURCES = "Application_%s.properties.xml";
+ public static final LinkedHashMap<Long, Locale> languages = new LinkedHashMap<>(); //TODO hide it and return unmodifiable map
+ public static final ConcurrentHashMap<Locale, List<StringLabel>> labelCache = new ConcurrentHashMap<>();
+ public static final Set<String> keys = new HashSet<>();
+ private static Class<?> APP = null;
+
+ public List<Map<String, Object>> getStrings(Long language_id, int start, int count) {
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (int i = 0; i < count; ++i) {
+ Map<String, Object> map = new HashMap<>();
+ map.put("id", start + i);
+ map.put("value", getString(start + i, language_id));
+ result.add(map);
+ }
+ return result;
+ }
+
+ private static void storeLanguages() throws Exception {
+ Document d = XmlExport.createDocument();
+ Element r = XmlExport.createRoot(d, "language");
+ for (Map.Entry<Long, Locale> e : languages.entrySet()) {
+ r.addElement("lang").addAttribute("id", "" + e.getKey()).addAttribute("code", e.getValue().toLanguageTag());
+ }
+ XmlExport.toXml(getLangFile(), d);
+ }
+
+ public static void add(Locale l) throws Exception {
+ long id = 0L;
+ for (Map.Entry<Long, Locale> e : languages.entrySet()) {
+ id = e.getKey();
+ }
+ languages.put(id + 1, l);
+ storeLanguages();
+ labelCache.put(l, new ArrayList<StringLabel>());
+ }
+
+ public String getString(long fieldValuesId, long langId) {
+ return ensureApplication(langId).getOmString(fieldValuesId, langId);
+ }
+
+ public String getString(String key, long langId) {
+ return ensureApplication(langId).getOmString(key, langId);
+ }
+
+ private static File getLangFile() {
+ return new File(OmFileHelper.getLanguagesDir(), OmFileHelper.nameOfLanguageFile);
+ }
+
+ public static synchronized Class<?> getAppClass() throws ClassNotFoundException {
+ if (APP == null) {
+ //FIXME HACK to resolve package dependencies
+ APP = Class.forName("org.apache.openmeetings.web.app.Application");
+ }
+ return APP;
+ }
+
+ public static void initLanguageMap() {
+ SAXReader reader = new SAXReader();
+ try {
+ getAppClass();
+ Document document = reader.read(getLangFile());
+ Element root = document.getRootElement();
+ languages.clear();
+ for (@SuppressWarnings("unchecked")Iterator<Element> it = root.elementIterator("lang"); it.hasNext();) {
+ Element item = it.next();
+ Long id = Long.valueOf(item.attributeValue("id"));
+ String code = item.attributeValue("code");
+ if (id == 3L) {
+ continue;
+ }
+ languages.put(id, Locale.forLanguageTag(code));
+ }
+ } catch (Exception e) {
+ log.error("Error while building language map");
+ }
+ }
+
+ public static String getLabelFileName(Locale l) {
+ String name = APP_RESOURCES_EN;
+ if (!Locale.ENGLISH.equals(l)) {
+ name = String.format(APP_RESOURCES, l.toLanguageTag().replace('-', '_'));
+ }
+ return name;
+ }
+
+ private static void storeLabels(Locale l) throws Exception {
+ Document d = XmlExport.createDocument();
+ Element r = XmlExport.createRoot(d);
+ List<StringLabel> labels = labelCache.get(l);
+ for (StringLabel sl : labels) {
+ r.addElement(ENTRY_ELEMENT).addAttribute(KEY_ATTR, sl.getKey()).addCDATA(sl.getValue());
+ }
+ URL u = APP.getResource(getLabelFileName(l));
+ XmlExport.toXml(new File(u.toURI()), d);
+ }
+
+ public static void upload(Locale l, InputStream is) throws Exception {
+ List<StringLabel> labels = getLabels(is);
+ URL u = APP.getResource(getLabelFileName(Locale.ENGLISH)); //get the URL of existing resource
+ File el = new File(u.toURI());
+ File f = new File(el.getParentFile(), getLabelFileName(l));
+ if (!f.exists()) {
+ f.createNewFile();
+ }
+ labelCache.put(l, labels);
+ storeLabels(l);
+ }
+
+ private static List<StringLabel> getLabels(Locale l) {
+ List<StringLabel> labels = new ArrayList<>();
+ try (InputStream is = APP.getResourceAsStream(getLabelFileName(l))) {
+ labels = getLabels(is);
+ } catch (Exception e) {
+ log.error("Error reading resources document", e);
+ }
+ return labels;
+ }
+
+ private static List<StringLabel> getLabels(InputStream is) throws InvalidPropertiesFormatException, IOException {
+ final List<StringLabel> labels = new ArrayList<>();
+ Properties props = new Properties();
+ props.loadFromXML(is);
+ props.forEach((k, v) -> labels.add(new StringLabel((String)k, (String)v)));
+ return labels;
+ }
+
+ private static List<StringLabel> getLabels(Locale l, final String search) {
+ if (!labelCache.containsKey(l)) {
+ List<StringLabel> ll = getLabels(l);
+ if (ll != null) {
+ labelCache.putIfAbsent(l, ll);
+ }
+ }
+ List<StringLabel> result = new ArrayList<>(labelCache.containsKey(l) ? labelCache.get(l) : new ArrayList<StringLabel>());
+ if (!Strings.isEmpty(search)) {
+ CollectionUtils.filter(result, new Predicate<StringLabel>() {
+ @Override
+ public boolean evaluate(StringLabel o) {
+ return o != null && (o.getKey().contains(search) || o.getValue().contains(search));
+ }
+ });
+ }
+ return result;
+ }
+
+ @Override
+ public StringLabel get(long id) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ @Override
+ public StringLabel get(Long id) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ @Override
+ public List<StringLabel> get(int start, int count) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ @Override
+ public List<StringLabel> get(String search, int start, int count, String order) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ public List<StringLabel> get(Locale l, final String search, int start, int count, final SortParam<String> sort) {
+ List<StringLabel> result = getLabels(l, search);
+ if (sort != null) {
+ Collections.sort(result, new Comparator<StringLabel>() {
+ @Override
+ public int compare(StringLabel o1, StringLabel o2) {
+ int val = 0;
+ if (KEY_ATTR.equals(sort.getProperty())) {
+ try {
+ int i1 = Integer.parseInt(o1.getKey()), i2 = Integer.parseInt(o2.getKey());
+ val = i1 - i2;
+ } catch (Exception e) {
+ val = o1.getKey().compareTo(o2.getKey());
+ }
+ } else {
+ val = o1.getValue().compareTo(o2.getValue());
+ }
+ return (sort.isAscending() ? 1 : -1) * val;
+ }
+ });
+ }
+ return result.subList(start, start + count > result.size() ? result.size() : start + count);
+ }
+
+ @Override
+ public long count() {
+ throw new RuntimeException("Should not be used");
+ }
+
+ @Override
+ public long count(String search) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ public long count(Locale l, final String search) {
+ return getLabels(l, search).size();
+ }
+
+ @Override
+ public StringLabel update(StringLabel entity, Long userId) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ public StringLabel update(Locale l, StringLabel entity) throws Exception {
+ List<StringLabel> labels = labelCache.get(l);
+ if (!labels.contains(entity)) {
+ labels.add(entity);
+ keys.add(entity.getKey());
+ }
+ storeLabels(l);
+ return entity;
+ }
+
+ @Override
+ public void delete(StringLabel entity, Long userId) {
+ throw new RuntimeException("Should not be used");
+ }
+
+ public void delete(Locale l, StringLabel entity) throws Exception {
+ List<StringLabel> labels = labelCache.get(l);
+ if (labels.contains(entity)) {
+ labels.remove(entity);
+ keys.remove(entity.getKey());
+ storeLabels(l);
+ }
+ }
+
+ public static void delete(Locale l) {
+ for (Map.Entry<Long, Locale> e : languages.entrySet()) {
+ if (e.getValue().equals(l)) {
+ languages.remove(e.getKey());
+ break;
+ }
+ }
+ labelCache.remove(l);
+ try {
+ URL u = APP.getResource(getLabelFileName(l));
+ if (u != null) {
+ File f = new File(u.toURI());
+ if (f.exists()) {
+ f.delete();
+ }
+ }
+ } catch (Exception e) {
+ log.error("Unexpected error while deleting language", e);
+ }
+ }
+}
[08/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index aa234b5..7484e44 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -1,412 +1,412 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.rooms;
-
-import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getRights;
-import static org.apache.openmeetings.web.app.WebSession.getSid;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.server.ISessionManager;
-import org.apache.openmeetings.db.dao.user.GroupDao;
-import org.apache.openmeetings.db.dao.user.IUserService;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.room.Client;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.db.entity.room.Room.RoomElement;
-import org.apache.openmeetings.db.entity.room.RoomGroup;
-import org.apache.openmeetings.db.entity.room.RoomModerator;
-import org.apache.openmeetings.db.entity.user.Address;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
-import org.apache.openmeetings.web.util.RoomTypeDropDown;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.ChoiceRenderer;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.util.string.Strings;
-import org.apache.wicket.util.time.Duration;
-import org.wicketstuff.select2.ChoiceProvider;
-import org.wicketstuff.select2.Response;
-import org.wicketstuff.select2.Select2Choice;
-import org.wicketstuff.select2.Select2MultiChoice;
-
-public class RoomForm extends AdminBaseForm<Room> {
- private static final long serialVersionUID = 1L;
- private final static List<Long> DROPDOWN_NUMBER_OF_PARTICIPANTS = Arrays.asList(2L, 4L, 6L, 8L, 10L, 12L, 14L, 16L, 20L, 25L, 32L, 50L,
- 100L, 150L, 200L, 500L, 1000L);
- private final WebMarkupContainer roomList;
- private final TextField<String> pin = new TextField<>("pin");
- private final WebMarkupContainer moderatorContainer = new WebMarkupContainer("moderatorContainer");
- private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
- private final ListView<Client> clients = new ListView<Client>("clients", new ArrayList<>()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final ListItem<Client> item) {
- Client client = item.getModelObject();
- item.add(new Label("clientId", "" + client.getId()))
- .add(new Label("clientLogin", "" + client.getUsername()))
- .add(new ConfirmableAjaxBorder("clientDelete", getString("80"), getString("833")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- Client c = item.getModelObject();
- getBean(IUserService.class).kickUserByStreamId(getSid(), c.getStreamid()
- , c.getServer() == null ? 0 : c.getServer().getId());
-
- updateClients(target);
- }
- });
- }
- };
- private IModel<User> moderator2add = Model.of((User)null);
-
- public RoomForm(String id, WebMarkupContainer roomList, final Room room) {
- super(id, new CompoundPropertyModel<>(room));
- this.roomList = roomList;
- setOutputMarkupId(true);
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- RequiredTextField<String> name = new RequiredTextField<>("name");
- name.setLabel(new Model<>(Application.getString(193)));
- add(name);
-
- add(new DropDownChoice<>("numberOfPartizipants", //
- DROPDOWN_NUMBER_OF_PARTICIPANTS, //
- new ChoiceRenderer<Long>() {
- private static final long serialVersionUID = 1L;
- @Override
- public Object getDisplayValue(Long id) {
- return id;
- }
- @Override
- public String getIdValue(Long id, int index) {
- return "" + id;
- }
- }));
-
- add(new RoomTypeDropDown("type").setRequired(true).setLabel(Model.of(Application.getString(194))));
-
- add(new TextArea<String>("comment"));
-
- boolean isGroupAdmin = hasGroupAdminLevel(getRights());
- add(new CheckBox("appointment").setEnabled(false));
- add(new CheckBox("ispublic").setEnabled(!isGroupAdmin));
-
- List<Group> orgList = isGroupAdmin
- ? getBean(GroupDao.class).get(null, getUserId(), 0, Integer.MAX_VALUE, null)
- : getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
- final List<RoomGroup> orgRooms = new ArrayList<>(orgList.size());
- for (Group org : orgList) {
- orgRooms.add(new RoomGroup(org, getModelObject()));
- }
- add(new Select2MultiChoice<>("roomGroups", null, new ChoiceProvider<RoomGroup>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getDisplayValue(RoomGroup choice) {
- String name = choice.getGroup().getName();
- return name == null ? "" : name;
- }
-
- @Override
- public String getIdValue(RoomGroup choice) {
- Long id = choice.getGroup().getId();
- return id == null ? null : "" + id;
- }
-
- @Override
- public void query(String term, int page, Response<RoomGroup> response) {
- for (RoomGroup or : orgRooms) {
- if (Strings.isEmpty(term) || or.getGroup().getName().contains(term)) {
- response.add(or);
- }
- }
- }
-
- @Override
- public Collection<RoomGroup> toChoices(Collection<String> _ids) {
- List<Long> ids = new ArrayList<>();
- for (String id : _ids) {
- ids.add(Long.valueOf(id));
- }
- List<RoomGroup> list = new ArrayList<>();
- for (Group o : getBean(GroupDao.class).get(ids)) {
- list.add(new RoomGroup(o, RoomForm.this.getModelObject()));
- }
- return list;
- }
- }).setLabel(Model.of(getString("828"))).setRequired(isGroupAdmin));
-
- add(new CheckBox("isDemoRoom"));
- TextField<Integer> demoTime = new TextField<>("demoTime");
- demoTime.setLabel(new Model<>(Application.getString(637)));
- add(demoTime);
- add(new CheckBox("allowUserQuestions"));
- add(new CheckBox("audioOnly"));
- add(new CheckBox("closed"));
- add(new TextField<String>("redirectURL"));
- add(new CheckBox("waitForRecording"));
- add(new CheckBox("allowRecording"));
- add(new CheckBox("chatModerated"));
-
- add(new Select2MultiChoice<>("hiddenElements", null, new ChoiceProvider<RoomElement>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getDisplayValue(RoomElement choice) {
- return choice.name();
- }
-
- @Override
- public String getIdValue(RoomElement choice) {
- return choice.name();
- }
-
- @Override
- public void query(String term, int page, Response<RoomElement> response) {
- for (RoomElement r : RoomElement.values()) {
- if (Strings.isEmpty(term) || r.name().contains(term)) {
- response.add(r);
- }
- }
- }
-
- @Override
- public Collection<RoomElement> toChoices(Collection<String> ids) {
- Collection<RoomElement> rights = new ArrayList<>(ids.size());
- for (String id : ids) {
- rights.add(RoomElement.valueOf(id));
- }
- return rights;
- }
- }));
- add(new CheckBox("chatOpened"));
- add(new CheckBox("filesOpened"));
- add(new CheckBox("autoVideoSelect"));
-
- // Users in this Room
- add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
-
- // Moderators
- final Select2Choice<User> moderatorChoice = new Select2Choice<>("moderator2add", moderator2add, new AdminUserChoiceProvider() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void query(String term, int page, Response<User> response) {
- response.addAll(getBean(UserDao.class).get(term, false, page * PAGE_SIZE, PAGE_SIZE));
- response.setHasMore(PAGE_SIZE == response.getResults().size());
- }
-
- @Override
- public String getDisplayValue(User choice) {
- Address a = choice.getAddress();
- return String.format("\"%s %s\" <%s>", choice.getFirstname(), choice.getLastname(), a == null ? "" : a.getEmail());
- }
- });
- add(moderatorChoice.add(new AjaxFormComponentUpdatingBehavior("change") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- Room r = RoomForm.this.getModelObject();
- User u = moderator2add.getObject();
- boolean found = false;
- if (u != null) {
- if (r.getModerators() == null) {
- r.setModerators(new ArrayList<RoomModerator>());
- }
- for (RoomModerator rm : r.getModerators()) {
- if (rm.getUser().getId().equals(u.getId())) {
- found = true;
- break;
- }
- }
- if (!found) {
- RoomModerator rm = new RoomModerator();
- rm.setRoomId(r.getId());
- rm.setUser(u);
- r.getModerators().add(0, rm);
- moderator2add.setObject(null);
- target.add(moderatorContainer, moderatorChoice);
- }
- }
- }
- }).setOutputMarkupId(true));
- add(moderatorContainer.add(new ListView<RoomModerator>("moderators") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final ListItem<RoomModerator> item) {
- RoomModerator moderator = item.getModelObject();
- Label name = new Label("uName", moderator.getUser().getFirstname() + " " + moderator.getUser().getLastname());
- if (moderator.getId() == null) {
- name.add(AttributeModifier.append("class", "newItem"));
- }
- item.add(new CheckBox("superModerator", new PropertyModel<Boolean>(moderator, "superModerator")))
- .add(new Label("userId", "" + moderator.getUser().getId()))
- .add(name)
- .add(new Label("email", moderator.getUser().getAddress().getEmail()))
- .add(new ConfirmableAjaxBorder("delete", getString("80"), getString("833")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- RoomForm.this.getModelObject().getModerators().remove(item.getIndex());
- target.add(moderatorContainer);
- }
- });
- }
- }).setOutputMarkupId(true));
-
- add(new CheckBox("moderated"));
-
- add(new TextField<String>("confno").setEnabled(false));
- add(pin);
- pin.setEnabled(getModelObject().isSipEnabled());
- add(new TextField<String>("ownerId").setEnabled(false));
- add(new AjaxCheckBox("sipEnabled") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- updateView(target);
- }
- }.setOutputMarkupId(true));
-
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-
- void updateClients(AjaxRequestTarget target) {
- long roomId = (getModelObject().getId() != null ? getModelObject().getId() : 0);
- final List<Client> clientsInRoom = getBean(ISessionManager.class).getClientListByRoom(roomId);
- clients.setDefaultModelObject(clientsInRoom);
- target.add(clientsContainer);
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- Room r = getModelObject();
- boolean newRoom = r.getId() == null;
- r = getBean(RoomDao.class).update(r, getUserId());
- if (newRoom) {
- for (RoomModerator rm : r.getModerators()) {
- rm.setRoomId(r.getId());
- }
- // FIXME double update
- getBean(RoomDao.class).update(getModelObject(), getUserId());
- }
- hideNewRecord();
- updateView(target);
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
- setModelObject(new Room());
- updateView(target);
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- Room r = getModelObject();
- if (r.getId() != null) {
- r = getBean(RoomDao.class).get(r.getId());
- } else {
- r = new Room();
- }
- setModelObject(r);
- updateView(target);
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- getBean(RoomDao.class).delete(getModelObject(), getUserId());
- target.add(roomList);
- setModelObject(new Room());
- updateView(target);
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- public void updateView(AjaxRequestTarget target) {
- target.add(this);
- target.add(roomList);
- target.add(pin.setEnabled(getModelObject().isSipEnabled()));
- updateClients(target);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onDetach() {
- moderator2add.detach();
- super.onDetach();
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.rooms;
+
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
+import static org.apache.openmeetings.web.app.WebSession.getSid;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.dao.user.IUserService;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.Room.RoomElement;
+import org.apache.openmeetings.db.entity.room.RoomGroup;
+import org.apache.openmeetings.db.entity.room.RoomModerator;
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
+import org.apache.openmeetings.web.util.RoomTypeDropDown;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.time.Duration;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2Choice;
+import org.wicketstuff.select2.Select2MultiChoice;
+
+public class RoomForm extends AdminBaseForm<Room> {
+ private static final long serialVersionUID = 1L;
+ private final static List<Long> DROPDOWN_NUMBER_OF_PARTICIPANTS = Arrays.asList(2L, 4L, 6L, 8L, 10L, 12L, 14L, 16L, 20L, 25L, 32L, 50L,
+ 100L, 150L, 200L, 500L, 1000L);
+ private final WebMarkupContainer roomList;
+ private final TextField<String> pin = new TextField<>("pin");
+ private final WebMarkupContainer moderatorContainer = new WebMarkupContainer("moderatorContainer");
+ private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
+ private final ListView<Client> clients = new ListView<Client>("clients", new ArrayList<>()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final ListItem<Client> item) {
+ Client client = item.getModelObject();
+ item.add(new Label("clientId", "" + client.getId()))
+ .add(new Label("clientLogin", "" + client.getUsername()))
+ .add(new ConfirmableAjaxBorder("clientDelete", getString("80"), getString("833")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ Client c = item.getModelObject();
+ getBean(IUserService.class).kickUserByStreamId(getSid(), c.getStreamid()
+ , c.getServer() == null ? 0 : c.getServer().getId());
+
+ updateClients(target);
+ }
+ });
+ }
+ };
+ private IModel<User> moderator2add = Model.of((User)null);
+
+ public RoomForm(String id, WebMarkupContainer roomList, final Room room) {
+ super(id, new CompoundPropertyModel<>(room));
+ this.roomList = roomList;
+ setOutputMarkupId(true);
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ RequiredTextField<String> name = new RequiredTextField<>("name");
+ name.setLabel(new Model<>(Application.getString(193)));
+ add(name);
+
+ add(new DropDownChoice<>("numberOfPartizipants", //
+ DROPDOWN_NUMBER_OF_PARTICIPANTS, //
+ new ChoiceRenderer<Long>() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public Object getDisplayValue(Long id) {
+ return id;
+ }
+ @Override
+ public String getIdValue(Long id, int index) {
+ return "" + id;
+ }
+ }));
+
+ add(new RoomTypeDropDown("type").setRequired(true).setLabel(Model.of(Application.getString(194))));
+
+ add(new TextArea<String>("comment"));
+
+ boolean isGroupAdmin = hasGroupAdminLevel(getRights());
+ add(new CheckBox("appointment").setEnabled(false));
+ add(new CheckBox("ispublic").setEnabled(!isGroupAdmin));
+
+ List<Group> orgList = isGroupAdmin
+ ? getBean(GroupDao.class).get(null, getUserId(), 0, Integer.MAX_VALUE, null)
+ : getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
+ final List<RoomGroup> orgRooms = new ArrayList<>(orgList.size());
+ for (Group org : orgList) {
+ orgRooms.add(new RoomGroup(org, getModelObject()));
+ }
+ add(new Select2MultiChoice<>("roomGroups", null, new ChoiceProvider<RoomGroup>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getDisplayValue(RoomGroup choice) {
+ String name = choice.getGroup().getName();
+ return name == null ? "" : name;
+ }
+
+ @Override
+ public String getIdValue(RoomGroup choice) {
+ Long id = choice.getGroup().getId();
+ return id == null ? null : "" + id;
+ }
+
+ @Override
+ public void query(String term, int page, Response<RoomGroup> response) {
+ for (RoomGroup or : orgRooms) {
+ if (Strings.isEmpty(term) || or.getGroup().getName().contains(term)) {
+ response.add(or);
+ }
+ }
+ }
+
+ @Override
+ public Collection<RoomGroup> toChoices(Collection<String> _ids) {
+ List<Long> ids = new ArrayList<>();
+ for (String id : _ids) {
+ ids.add(Long.valueOf(id));
+ }
+ List<RoomGroup> list = new ArrayList<>();
+ for (Group o : getBean(GroupDao.class).get(ids)) {
+ list.add(new RoomGroup(o, RoomForm.this.getModelObject()));
+ }
+ return list;
+ }
+ }).setLabel(Model.of(getString("828"))).setRequired(isGroupAdmin));
+
+ add(new CheckBox("isDemoRoom"));
+ TextField<Integer> demoTime = new TextField<>("demoTime");
+ demoTime.setLabel(new Model<>(Application.getString(637)));
+ add(demoTime);
+ add(new CheckBox("allowUserQuestions"));
+ add(new CheckBox("audioOnly"));
+ add(new CheckBox("closed"));
+ add(new TextField<String>("redirectURL"));
+ add(new CheckBox("waitForRecording"));
+ add(new CheckBox("allowRecording"));
+ add(new CheckBox("chatModerated"));
+
+ add(new Select2MultiChoice<>("hiddenElements", null, new ChoiceProvider<RoomElement>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getDisplayValue(RoomElement choice) {
+ return choice.name();
+ }
+
+ @Override
+ public String getIdValue(RoomElement choice) {
+ return choice.name();
+ }
+
+ @Override
+ public void query(String term, int page, Response<RoomElement> response) {
+ for (RoomElement r : RoomElement.values()) {
+ if (Strings.isEmpty(term) || r.name().contains(term)) {
+ response.add(r);
+ }
+ }
+ }
+
+ @Override
+ public Collection<RoomElement> toChoices(Collection<String> ids) {
+ Collection<RoomElement> rights = new ArrayList<>(ids.size());
+ for (String id : ids) {
+ rights.add(RoomElement.valueOf(id));
+ }
+ return rights;
+ }
+ }));
+ add(new CheckBox("chatOpened"));
+ add(new CheckBox("filesOpened"));
+ add(new CheckBox("autoVideoSelect"));
+
+ // Users in this Room
+ add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
+
+ // Moderators
+ final Select2Choice<User> moderatorChoice = new Select2Choice<>("moderator2add", moderator2add, new AdminUserChoiceProvider() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void query(String term, int page, Response<User> response) {
+ response.addAll(getBean(UserDao.class).get(term, false, page * PAGE_SIZE, PAGE_SIZE));
+ response.setHasMore(PAGE_SIZE == response.getResults().size());
+ }
+
+ @Override
+ public String getDisplayValue(User choice) {
+ Address a = choice.getAddress();
+ return String.format("\"%s %s\" <%s>", choice.getFirstname(), choice.getLastname(), a == null ? "" : a.getEmail());
+ }
+ });
+ add(moderatorChoice.add(new AjaxFormComponentUpdatingBehavior("change") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ Room r = RoomForm.this.getModelObject();
+ User u = moderator2add.getObject();
+ boolean found = false;
+ if (u != null) {
+ if (r.getModerators() == null) {
+ r.setModerators(new ArrayList<RoomModerator>());
+ }
+ for (RoomModerator rm : r.getModerators()) {
+ if (rm.getUser().getId().equals(u.getId())) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ RoomModerator rm = new RoomModerator();
+ rm.setRoomId(r.getId());
+ rm.setUser(u);
+ r.getModerators().add(0, rm);
+ moderator2add.setObject(null);
+ target.add(moderatorContainer, moderatorChoice);
+ }
+ }
+ }
+ }).setOutputMarkupId(true));
+ add(moderatorContainer.add(new ListView<RoomModerator>("moderators") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final ListItem<RoomModerator> item) {
+ RoomModerator moderator = item.getModelObject();
+ Label name = new Label("uName", moderator.getUser().getFirstname() + " " + moderator.getUser().getLastname());
+ if (moderator.getId() == null) {
+ name.add(AttributeModifier.append("class", "newItem"));
+ }
+ item.add(new CheckBox("superModerator", new PropertyModel<Boolean>(moderator, "superModerator")))
+ .add(new Label("userId", "" + moderator.getUser().getId()))
+ .add(name)
+ .add(new Label("email", moderator.getUser().getAddress().getEmail()))
+ .add(new ConfirmableAjaxBorder("delete", getString("80"), getString("833")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ RoomForm.this.getModelObject().getModerators().remove(item.getIndex());
+ target.add(moderatorContainer);
+ }
+ });
+ }
+ }).setOutputMarkupId(true));
+
+ add(new CheckBox("moderated"));
+
+ add(new TextField<String>("confno").setEnabled(false));
+ add(pin);
+ pin.setEnabled(getModelObject().isSipEnabled());
+ add(new TextField<String>("ownerId").setEnabled(false));
+ add(new AjaxCheckBox("sipEnabled") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ updateView(target);
+ }
+ }.setOutputMarkupId(true));
+
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+
+ void updateClients(AjaxRequestTarget target) {
+ long roomId = (getModelObject().getId() != null ? getModelObject().getId() : 0);
+ final List<Client> clientsInRoom = getBean(ISessionManager.class).getClientListByRoom(roomId);
+ clients.setDefaultModelObject(clientsInRoom);
+ target.add(clientsContainer);
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ Room r = getModelObject();
+ boolean newRoom = r.getId() == null;
+ r = getBean(RoomDao.class).update(r, getUserId());
+ if (newRoom) {
+ for (RoomModerator rm : r.getModerators()) {
+ rm.setRoomId(r.getId());
+ }
+ // FIXME double update
+ getBean(RoomDao.class).update(getModelObject(), getUserId());
+ }
+ hideNewRecord();
+ updateView(target);
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+ setModelObject(new Room());
+ updateView(target);
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ Room r = getModelObject();
+ if (r.getId() != null) {
+ r = getBean(RoomDao.class).get(r.getId());
+ } else {
+ r = new Room();
+ }
+ setModelObject(r);
+ updateView(target);
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ getBean(RoomDao.class).delete(getModelObject(), getUserId());
+ target.add(roomList);
+ setModelObject(new Room());
+ updateView(target);
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ public void updateView(AjaxRequestTarget target) {
+ target.add(this);
+ target.add(roomList);
+ target.add(pin.setEnabled(getModelObject().isSipEnabled()));
+ updateClients(target);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onDetach() {
+ moderator2add.detach();
+ super.onDetach();
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
index 0fa1f60..761b34e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
@@ -1,91 +1,91 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.rooms;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.web.admin.AdminPanel;
-import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.common.PagedEntityListPanel;
-import org.apache.openmeetings.web.data.DataViewContainer;
-import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableGroupAdminDataProvider;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-
-@AuthorizeInstantiation({"Admin", "GroupAdmin"})
-public class RoomsPanel extends AdminPanel {
- private static final long serialVersionUID = -1L;
- final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
- private RoomForm form;
-
- public RoomsPanel(String id) {
- super(id);
- SearchableDataView<Room> dataView = new SearchableDataView<Room>("roomList", new SearchableGroupAdminDataProvider<>(RoomDao.class)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final Item<Room> item) {
- Room room = item.getModelObject();
- final Long roomId = room.getId();
- item.add(new Label("id"));
- item.add(new Label("name"));
- item.add(new Label("ispublic"));
- item.add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- form.hideNewRecord();
- form.setModelObject(getBean(RoomDao.class).get(roomId));
- form.updateView(target);
- target.add(form, listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
- });
- item.add(AttributeModifier.replace("class", getRowClass(room.getId(), form.getModelObject().getId())));
- }
- };
-
- add(listContainer.add(dataView).setOutputMarkupId(true));
- PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
- private static final long serialVersionUID = -1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- target.add(listContainer);
- }
- };
- DataViewContainer<Room> container = new DataViewContainer<>(listContainer, dataView, navigator);
- container.addLink(new OmOrderByBorder<>("orderById", "id", container))
- .addLink(new OmOrderByBorder<>("orderByName", "name", container))
- .addLink(new OmOrderByBorder<>("orderByPublic", "ispublic", container));
- add(container.getLinks());
- add(navigator);
-
- add(form = new RoomForm("form", listContainer, new Room()));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.rooms;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableGroupAdminDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+@AuthorizeInstantiation({"Admin", "GroupAdmin"})
+public class RoomsPanel extends AdminPanel {
+ private static final long serialVersionUID = -1L;
+ final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+ private RoomForm form;
+
+ public RoomsPanel(String id) {
+ super(id);
+ SearchableDataView<Room> dataView = new SearchableDataView<Room>("roomList", new SearchableGroupAdminDataProvider<>(RoomDao.class)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final Item<Room> item) {
+ Room room = item.getModelObject();
+ final Long roomId = room.getId();
+ item.add(new Label("id"));
+ item.add(new Label("name"));
+ item.add(new Label("ispublic"));
+ item.add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ form.hideNewRecord();
+ form.setModelObject(getBean(RoomDao.class).get(roomId));
+ form.updateView(target);
+ target.add(form, listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+ });
+ item.add(AttributeModifier.replace("class", getRowClass(room.getId(), form.getModelObject().getId())));
+ }
+ };
+
+ add(listContainer.add(dataView).setOutputMarkupId(true));
+ PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+ private static final long serialVersionUID = -1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ target.add(listContainer);
+ }
+ };
+ DataViewContainer<Room> container = new DataViewContainer<>(listContainer, dataView, navigator);
+ container.addLink(new OmOrderByBorder<>("orderById", "id", container))
+ .addLink(new OmOrderByBorder<>("orderByName", "name", container))
+ .addLink(new OmOrderByBorder<>("orderByPublic", "ispublic", container));
+ add(container.getLinks());
+ add(navigator);
+
+ add(form = new RoomForm("form", listContainer, new Room()));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
index e93a4a2..c40315e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
@@ -1,140 +1,140 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.servers;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
-import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
-
-import org.apache.openmeetings.db.dao.server.ServerDao;
-import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.time.Duration;
-
-/**
- * Form component to insert/update/delete {@link Server}
- *
- * @author swagner
- *
- */
-public class ServerForm extends AdminBaseForm<Server> {
- private final WebMarkupContainer listContainer;
- private static final long serialVersionUID = 1L;
-
- public ServerForm(String id, WebMarkupContainer listContainer, final Server server) {
- super(id, new CompoundPropertyModel<>(server));
- setOutputMarkupId(true);
- this.listContainer = listContainer;
-
- add(new RequiredTextField<String>("name").setLabel(Model.of(Application.getString(1500))));
- add(new CheckBox("active"));
- add(new RequiredTextField<String>("address").setLabel(Model.of(Application.getString(1501))));
- add(new TextField<Integer>("port"));
- add(new TextField<String>("user"));
- add(new TextField<String>("pass"));
- add(new TextField<String>("webapp"));
- add(new TextField<String>("protocol"));
- add(forDatePattern("lastPing", WEB_DATE_PATTERN));
- //add(new Label("pingRunning"));
- add(forDatePattern("inserted", WEB_DATE_PATTERN));
- add(new Label("insertedby.login"));
- add(forDatePattern("updated", WEB_DATE_PATTERN));
- add(new Label("updatedby.login"));
- add(new TextArea<String>("comment"));
-
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- Application.getBean(ServerDao.class).update(getModelObject(), WebSession.getUserId());
- Server server = Application.getBean(ServerDao.class).get(getModelObject().getId());
- setModelObject(server);
- hideNewRecord();
- target.add(this);
- target.add(listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
- Server s = new Server();
- s.setWebapp("openmeetings");
- s.setProtocol("http");
- setModelObject(s);
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- Server server = getModelObject();
- if (server.getId() != null) {
- server = Application.getBean(ServerDao.class).get(server.getId());
- } else {
- server = new Server();
- }
- setModelObject(server);
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- Application.getBean(ServerDao.class).delete(getModelObject(), WebSession.getUserId());
- this.setModelObject(new Server());
- target.add(listContainer);
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.servers;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+
+/**
+ * Form component to insert/update/delete {@link Server}
+ *
+ * @author swagner
+ *
+ */
+public class ServerForm extends AdminBaseForm<Server> {
+ private final WebMarkupContainer listContainer;
+ private static final long serialVersionUID = 1L;
+
+ public ServerForm(String id, WebMarkupContainer listContainer, final Server server) {
+ super(id, new CompoundPropertyModel<>(server));
+ setOutputMarkupId(true);
+ this.listContainer = listContainer;
+
+ add(new RequiredTextField<String>("name").setLabel(Model.of(Application.getString(1500))));
+ add(new CheckBox("active"));
+ add(new RequiredTextField<String>("address").setLabel(Model.of(Application.getString(1501))));
+ add(new TextField<Integer>("port"));
+ add(new TextField<String>("user"));
+ add(new TextField<String>("pass"));
+ add(new TextField<String>("webapp"));
+ add(new TextField<String>("protocol"));
+ add(forDatePattern("lastPing", WEB_DATE_PATTERN));
+ //add(new Label("pingRunning"));
+ add(forDatePattern("inserted", WEB_DATE_PATTERN));
+ add(new Label("insertedby.login"));
+ add(forDatePattern("updated", WEB_DATE_PATTERN));
+ add(new Label("updatedby.login"));
+ add(new TextArea<String>("comment"));
+
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ Application.getBean(ServerDao.class).update(getModelObject(), WebSession.getUserId());
+ Server server = Application.getBean(ServerDao.class).get(getModelObject().getId());
+ setModelObject(server);
+ hideNewRecord();
+ target.add(this);
+ target.add(listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+ Server s = new Server();
+ s.setWebapp("openmeetings");
+ s.setProtocol("http");
+ setModelObject(s);
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ Server server = getModelObject();
+ if (server.getId() != null) {
+ server = Application.getBean(ServerDao.class).get(server.getId());
+ } else {
+ server = new Server();
+ }
+ setModelObject(server);
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ Application.getBean(ServerDao.class).delete(getModelObject(), WebSession.getUserId());
+ this.setModelObject(new Server());
+ target.add(listContainer);
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
index b7889b3..1a60552 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
@@ -1,95 +1,95 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.servers;
-
-import org.apache.openmeetings.db.dao.server.ServerDao;
-import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.web.admin.AdminPanel;
-import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.common.PagedEntityListPanel;
-import org.apache.openmeetings.web.data.DataViewContainer;
-import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-
-/**
- * Form component with list and form to manipulate {@link Server}
- *
- * @author swagner
- *
- */
-public class ServersPanel extends AdminPanel {
- private static final long serialVersionUID = 1L;
- final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
- private ServerForm form;
-
- public ServersPanel(String id) {
- super(id);
- SearchableDataView<Server> dataView = new SearchableDataView<Server>("serverList",
- new SearchableDataProvider<>(ServerDao.class)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final Item<Server> item) {
- final Server server = item.getModelObject();
- item.add(new Label("id"));
- item.add(new Label("name"));
- item.add(new Label("address"));
- item.add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- form.setModelObject(server);
- form.hideNewRecord();
- target.add(form, listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
- });
- item.add(AttributeModifier.replace("class", getRowClass(server.getId(), form.getModelObject().getId())));
- }
- };
-
- add(listContainer.add(dataView).setOutputMarkupId(true));
- PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- target.add(listContainer);
- }
- };
- DataViewContainer<Server> container = new DataViewContainer<>(listContainer, dataView, navigator);
- container.addLink(new OmOrderByBorder<>("orderById", "id", container))
- .addLink(new OmOrderByBorder<>("orderByName", "name", container))
- .addLink(new OmOrderByBorder<>("orderByAddress", "address", container));
- add(container.getLinks());
- add(navigator);
-
- form = new ServerForm("form", listContainer, new Server());
- form.showNewRecord();
- add(form);
-
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.servers;
+
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+/**
+ * Form component with list and form to manipulate {@link Server}
+ *
+ * @author swagner
+ *
+ */
+public class ServersPanel extends AdminPanel {
+ private static final long serialVersionUID = 1L;
+ final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+ private ServerForm form;
+
+ public ServersPanel(String id) {
+ super(id);
+ SearchableDataView<Server> dataView = new SearchableDataView<Server>("serverList",
+ new SearchableDataProvider<>(ServerDao.class)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final Item<Server> item) {
+ final Server server = item.getModelObject();
+ item.add(new Label("id"));
+ item.add(new Label("name"));
+ item.add(new Label("address"));
+ item.add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ form.setModelObject(server);
+ form.hideNewRecord();
+ target.add(form, listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+ });
+ item.add(AttributeModifier.replace("class", getRowClass(server.getId(), form.getModelObject().getId())));
+ }
+ };
+
+ add(listContainer.add(dataView).setOutputMarkupId(true));
+ PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ target.add(listContainer);
+ }
+ };
+ DataViewContainer<Server> container = new DataViewContainer<>(listContainer, dataView, navigator);
+ container.addLink(new OmOrderByBorder<>("orderById", "id", container))
+ .addLink(new OmOrderByBorder<>("orderByName", "name", container))
+ .addLink(new OmOrderByBorder<>("orderByAddress", "address", container));
+ add(container.getLinks());
+ add(navigator);
+
+ form = new ServerForm("form", listContainer, new Server());
+ form.showNewRecord();
+ add(form);
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index 30644c6..dadb391 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -1,314 +1,314 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.users;
-
-import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getRights;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
-import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.dao.server.LdapConfigDao;
-import org.apache.openmeetings.db.dao.server.OAuth2Dao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.server.LdapConfig;
-import org.apache.openmeetings.db.entity.server.OAuthServer;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.entity.user.User.Right;
-import org.apache.openmeetings.db.entity.user.User.Type;
-import org.apache.openmeetings.service.mail.EmailManager;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.ComunityUserForm;
-import org.apache.openmeetings.web.common.GeneralUserForm;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.ChoiceRenderer;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
-import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.string.Strings;
-import org.apache.wicket.util.time.Duration;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.wicketstuff.select2.ChoiceProvider;
-import org.wicketstuff.select2.Response;
-import org.wicketstuff.select2.Select2MultiChoice;
-
-import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
-
-/**
- * CRUD operations in form for {@link User}
- *
- * @author swagner
- *
- */
-public class UserForm extends AdminBaseForm<User> {
- private static final long serialVersionUID = 1L;
- private static final Logger log = Red5LoggerFactory.getLogger(UserForm.class, webAppRootKey);
- private final WebMarkupContainer listContainer;
- private final WebMarkupContainer domain = new WebMarkupContainer("domain");
- private GeneralUserForm generalForm;
- private final RequiredTextField<String> login = new RequiredTextField<>("login");
- private final MessageDialog warning;
- private final DropDownChoice<Long> domainId = new DropDownChoice<>("domainId");
-
- public UserForm(String id, WebMarkupContainer listContainer, final User user, MessageDialog warning) {
- super(id, new CompoundPropertyModel<>(user));
- setOutputMarkupId(true);
- this.listContainer = listContainer;
- this.warning = warning;
- // Add form fields
- addFormFields();
-
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-
- @Override
- protected void onModelChanged() {
- super.onModelChanged();
- generalForm.updateModelObject(getModelObject(), true);
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- User u = getModelObject();
- try {
- boolean isNew = (u.getId() == null);
- boolean sendEmailAtRegister = (1 == getBean(ConfigurationDao.class).getConfValue("sendEmailAtRegister", Integer.class, "0"));
- if (isNew && sendEmailAtRegister) {
- u.setActivatehash(UUID.randomUUID().toString());
- }
- u = getBean(UserDao.class).update(u, generalForm.getPasswordField().getConvertedInput(), getUserId());
- if (isNew && sendEmailAtRegister) {
- String sendMail = getBean(EmailManager.class).sendMail(login.getValue(), generalForm.getEmail(), u.getActivatehash(), false, null);
- if (!sendMail.equals("success")) {
- throw new Exception("Mail for new user is not sent");
- }
- }
- } catch (Exception e) {
- // FIXME update feedback with the error details
- log.error("[onSaveSubmit]: ", e);
- }
- setModelObject(u);
- hideNewRecord();
- target.add(this);
- target.add(listContainer);
- target.appendJavaScript("adminPanelInit();");
- if (u.getGroupUsers().isEmpty()) {
- warning.open(target);
- }
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
- UserDao userDao = getBean(UserDao.class);
- setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
- update(target);
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- User user = getModelObject();
- if (user.getId() != null) {
- user = getBean(UserDao.class).get(user.getId());
- } else {
- user = getBean(UserDao.class).getNewUserInstance(null);
- }
- setModelObject(user);
- update(target);
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- UserDao userDao = getBean(UserDao.class);
- userDao.delete(getModelObject(), getUserId());
- setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
- update(target);
- }
-
- /**
- * Add the fields to the form
- */
- private void addFormFields() {
- ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
- login.setLabel(Model.of(Application.getString(132)));
- add(login.add(minimumLength(getMinLoginLength(cfgDao))));
-
- add(generalForm = new GeneralUserForm("general", getModel(), true));
-
- add(new DropDownChoice<>("type", Arrays.asList(Type.values())).add(new OnChangeAjaxBehavior() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- updateDomain(target);
- }
- }));
- update(null);
- add(domain.add(domainId).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
- add(new Label("ownerId"));
- add(forDatePattern("inserted", WEB_DATE_PATTERN));
- add(forDatePattern("updated", WEB_DATE_PATTERN));
-
- add(new CheckBox("forceTimeZoneCheck"));
-
- add(new Select2MultiChoice<>("rights", null, new ChoiceProvider<Right>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getDisplayValue(Right choice) {
- return choice.name();
- }
-
- @Override
- public String getIdValue(Right choice) {
- return choice.name();
- }
-
- @Override
- public void query(String term, int page, Response<Right> response) {
- boolean isGroupAdmin = hasGroupAdminLevel(getRights());
- for (Right r : Right.values()) {
- if (Right.GroupAdmin == r) {
- continue;
- }
- if (isGroupAdmin && (Right.Admin == r || Right.Soap == r)) {
- continue;
- }
- if (Strings.isEmpty(term) || r.name().contains(term)) {
- response.add(r);
- }
- }
- }
-
- @Override
- public Collection<Right> toChoices(Collection<String> ids) {
- Collection<Right> rights = new ArrayList<>(ids.size());
- for (String id : ids) {
- rights.add(Right.valueOf(id));
- }
- return rights;
- }
- }));
- add(new ComunityUserForm("comunity", getModel()));
- }
-
- public void updateDomain(AjaxRequestTarget target) {
- User u = getModelObject();
- final Map<Long, String> values = new Hashtable<>();
- List<Long> ids = new ArrayList<>();
- if (u.getType() == Type.ldap) {
- for (LdapConfig c : getBean(LdapConfigDao.class).getActive()) {
- ids.add(c.getId());
- values.put(c.getId(), c.getName());
- }
- }
- if (u.getType() == Type.oauth) {
- for (OAuthServer s : getBean(OAuth2Dao.class).getActive()) {
- ids.add(s.getId());
- values.put(s.getId(), s.getName());
- }
- }
- domainId.setChoices(ids);
- domainId.setChoiceRenderer(new ChoiceRenderer<Long>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public Object getDisplayValue(Long object) {
- return values.get(object);
- }
-
- @Override
- public String getIdValue(Long object, int index) {
- return "" + object;
- }
- });
- domain.setVisible(u.getType() == Type.ldap || u.getType() == Type.oauth);
- if (target != null) {
- target.add(domain);
- }
- }
-
- public void update(AjaxRequestTarget target) {
- updateDomain(target);
- if (target != null) {
- target.add(this, listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
- }
-
- @Override
- protected void onValidate() {
- User u = getModelObject();
- if(!getBean(UserDao.class).checkLogin(login.getConvertedInput(), u.getType(), u.getDomainId(), u.getId())) {
- error(getString("105"));
- }
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- //ignore validation errors
- onNewSubmit(target, form);
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- //ignore validation errors
- onDeleteSubmit(target, form);
- }
-
- @Override
- protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
- return new PanelMarkupSourcingStrategy(false);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.users;
+
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
+import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.service.mail.EmailManager;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ComunityUserForm;
+import org.apache.openmeetings.web.common.GeneralUserForm;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
+import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.time.Duration;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2MultiChoice;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
+/**
+ * CRUD operations in form for {@link User}
+ *
+ * @author swagner
+ *
+ */
+public class UserForm extends AdminBaseForm<User> {
+ private static final long serialVersionUID = 1L;
+ private static final Logger log = Red5LoggerFactory.getLogger(UserForm.class, webAppRootKey);
+ private final WebMarkupContainer listContainer;
+ private final WebMarkupContainer domain = new WebMarkupContainer("domain");
+ private GeneralUserForm generalForm;
+ private final RequiredTextField<String> login = new RequiredTextField<>("login");
+ private final MessageDialog warning;
+ private final DropDownChoice<Long> domainId = new DropDownChoice<>("domainId");
+
+ public UserForm(String id, WebMarkupContainer listContainer, final User user, MessageDialog warning) {
+ super(id, new CompoundPropertyModel<>(user));
+ setOutputMarkupId(true);
+ this.listContainer = listContainer;
+ this.warning = warning;
+ // Add form fields
+ addFormFields();
+
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+
+ @Override
+ protected void onModelChanged() {
+ super.onModelChanged();
+ generalForm.updateModelObject(getModelObject(), true);
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ User u = getModelObject();
+ try {
+ boolean isNew = (u.getId() == null);
+ boolean sendEmailAtRegister = (1 == getBean(ConfigurationDao.class).getConfValue("sendEmailAtRegister", Integer.class, "0"));
+ if (isNew && sendEmailAtRegister) {
+ u.setActivatehash(UUID.randomUUID().toString());
+ }
+ u = getBean(UserDao.class).update(u, generalForm.getPasswordField().getConvertedInput(), getUserId());
+ if (isNew && sendEmailAtRegister) {
+ String sendMail = getBean(EmailManager.class).sendMail(login.getValue(), generalForm.getEmail(), u.getActivatehash(), false, null);
+ if (!sendMail.equals("success")) {
+ throw new Exception("Mail for new user is not sent");
+ }
+ }
+ } catch (Exception e) {
+ // FIXME update feedback with the error details
+ log.error("[onSaveSubmit]: ", e);
+ }
+ setModelObject(u);
+ hideNewRecord();
+ target.add(this);
+ target.add(listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ if (u.getGroupUsers().isEmpty()) {
+ warning.open(target);
+ }
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+ UserDao userDao = getBean(UserDao.class);
+ setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
+ update(target);
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ User user = getModelObject();
+ if (user.getId() != null) {
+ user = getBean(UserDao.class).get(user.getId());
+ } else {
+ user = getBean(UserDao.class).getNewUserInstance(null);
+ }
+ setModelObject(user);
+ update(target);
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ UserDao userDao = getBean(UserDao.class);
+ userDao.delete(getModelObject(), getUserId());
+ setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
+ update(target);
+ }
+
+ /**
+ * Add the fields to the form
+ */
+ private void addFormFields() {
+ ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+ login.setLabel(Model.of(Application.getString(132)));
+ add(login.add(minimumLength(getMinLoginLength(cfgDao))));
+
+ add(generalForm = new GeneralUserForm("general", getModel(), true));
+
+ add(new DropDownChoice<>("type", Arrays.asList(Type.values())).add(new OnChangeAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ updateDomain(target);
+ }
+ }));
+ update(null);
+ add(domain.add(domainId).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
+ add(new Label("ownerId"));
+ add(forDatePattern("inserted", WEB_DATE_PATTERN));
+ add(forDatePattern("updated", WEB_DATE_PATTERN));
+
+ add(new CheckBox("forceTimeZoneCheck"));
+
+ add(new Select2MultiChoice<>("rights", null, new ChoiceProvider<Right>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getDisplayValue(Right choice) {
+ return choice.name();
+ }
+
+ @Override
+ public String getIdValue(Right choice) {
+ return choice.name();
+ }
+
+ @Override
+ public void query(String term, int page, Response<Right> response) {
+ boolean isGroupAdmin = hasGroupAdminLevel(getRights());
+ for (Right r : Right.values()) {
+ if (Right.GroupAdmin == r) {
+ continue;
+ }
+ if (isGroupAdmin && (Right.Admin == r || Right.Soap == r)) {
+ continue;
+ }
+ if (Strings.isEmpty(term) || r.name().contains(term)) {
+ response.add(r);
+ }
+ }
+ }
+
+ @Override
+ public Collection<Right> toChoices(Collection<String> ids) {
+ Collection<Right> rights = new ArrayList<>(ids.size());
+ for (String id : ids) {
+ rights.add(Right.valueOf(id));
+ }
+ return rights;
+ }
+ }));
+ add(new ComunityUserForm("comunity", getModel()));
+ }
+
+ public void updateDomain(AjaxRequestTarget target) {
+ User u = getModelObject();
+ final Map<Long, String> values = new Hashtable<>();
+ List<Long> ids = new ArrayList<>();
+ if (u.getType() == Type.ldap) {
+ for (LdapConfig c : getBean(LdapConfigDao.class).getActive()) {
+ ids.add(c.getId());
+ values.put(c.getId(), c.getName());
+ }
+ }
+ if (u.getType() == Type.oauth) {
+ for (OAuthServer s : getBean(OAuth2Dao.class).getActive()) {
+ ids.add(s.getId());
+ values.put(s.getId(), s.getName());
+ }
+ }
+ domainId.setChoices(ids);
+ domainId.setChoiceRenderer(new ChoiceRenderer<Long>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Object getDisplayValue(Long object) {
+ return values.get(object);
+ }
+
+ @Override
+ public String getIdValue(Long object, int index) {
+ return "" + object;
+ }
+ });
+ domain.setVisible(u.getType() == Type.ldap || u.getType() == Type.oauth);
+ if (target != null) {
+ target.add(domain);
+ }
+ }
+
+ public void update(AjaxRequestTarget target) {
+ updateDomain(target);
+ if (target != null) {
+ target.add(this, listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+ }
+
+ @Override
+ protected void onValidate() {
+ User u = getModelObject();
+ if(!getBean(UserDao.class).checkLogin(login.getConvertedInput(), u.getType(), u.getDomainId(), u.getId())) {
+ error(getString("105"));
+ }
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ //ignore validation errors
+ onNewSubmit(target, form);
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ //ignore validation errors
+ onDeleteSubmit(target, form);
+ }
+
+ @Override
+ protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
+ return new PanelMarkupSourcingStrategy(false);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
index aecfe6d..a1352ec 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
@@ -1,65 +1,65 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.app;
-
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.resource.loader.IStringResourceLoader;
-
-/**
- * Map property values to OpenMeetings labelid's and get the string
- *
- * @author swagner
- *
- */
-public class LabelResourceLoader implements IStringResourceLoader {
-
- private static Map<String,Long> STRING_LABEL_MAPPING = new HashMap<>();
-
- static {
- STRING_LABEL_MAPPING.put("PagingNavigator.first", 368L);
- STRING_LABEL_MAPPING.put("PagingNavigator.previous", 369L);
- STRING_LABEL_MAPPING.put("PagingNavigator.next", 370L);
- STRING_LABEL_MAPPING.put("PagingNavigator.last", 371L);
- }
-
- @Override
- public String loadStringResource(Class<?> clazz, String key, Locale locale,
- String style, String variation) {
- return getStringByPropertyKey(key);
- }
-
- @Override
- public String loadStringResource(Component component, String key,
- Locale locale, String style, String variation) {
- return getStringByPropertyKey(key);
- }
-
- private static String getStringByPropertyKey(String key) {
- Long labelId = STRING_LABEL_MAPPING.get(key);
- if (labelId == null) {
- return null;
- }
- return Application.getString(labelId);
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.app;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.resource.loader.IStringResourceLoader;
+
+/**
+ * Map property values to OpenMeetings labelid's and get the string
+ *
+ * @author swagner
+ *
+ */
+public class LabelResourceLoader implements IStringResourceLoader {
+
+ private static Map<String,Long> STRING_LABEL_MAPPING = new HashMap<>();
+
+ static {
+ STRING_LABEL_MAPPING.put("PagingNavigator.first", 368L);
+ STRING_LABEL_MAPPING.put("PagingNavigator.previous", 369L);
+ STRING_LABEL_MAPPING.put("PagingNavigator.next", 370L);
+ STRING_LABEL_MAPPING.put("PagingNavigator.last", 371L);
+ }
+
+ @Override
+ public String loadStringResource(Class<?> clazz, String key, Locale locale,
+ String style, String variation) {
+ return getStringByPropertyKey(key);
+ }
+
+ @Override
+ public String loadStringResource(Component component, String key,
+ Locale locale, String style, String variation) {
+ return getStringByPropertyKey(key);
+ }
+
+ private static String getStringByPropertyKey(String key) {
+ Long labelId = STRING_LABEL_MAPPING.get(key);
+ if (labelId == null) {
+ return null;
+ }
+ return Application.getString(labelId);
+ }
+
+}
[15/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/CustomCryptMechanism.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/CustomCryptMechanism.xml b/openmeetings-server/src/site/xdoc/CustomCryptMechanism.xml
index 8bef094..fcf97ef 100644
--- a/openmeetings-server/src/site/xdoc/CustomCryptMechanism.xml
+++ b/openmeetings-server/src/site/xdoc/CustomCryptMechanism.xml
@@ -1,103 +1,103 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Howto create a Custom Crypt styles</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="Configuration of Custom Crypt-Style">
- <p>
- You can use custom Crypt-Types, but you should decide during
- installation which Type of encryption you want to use. By default
- two type are available:
- </p>
-
- <ul>
- <li>org.apache.openmeetings.util.crypt.MD5Implementation - this uses common MD5
- Crypt like PHP does, this is the default one (results in something
- like: fe01ce2a7fbac8fafaed7c982a04e229)</li>
- <li>org.apache.openmeetings.util.crypt.MD5CryptImplementation - does use
- BSD-Style of encryption using a salt (results in something like:
- $1$GMsj7F2I$5S3r9CeukXGXNwf6b4sph1)</li>
- </ul>
- <p>
- You can edit the config-key during Installation or later in the
- Administration Panel. But if you change it using the
- Administration-Panel previous passwords might be not working anymore
- as they are encrypted with another algorithm.
- </p>
- </section>
- <section name="Configuration of Custom Crypt-Style">
- <p>
- To add your own crypt style you need to write a class which
- implements the interface: org.apache.openmeetings.util.crypt.ICrypt
- <br />
- Example of an Implementation:
- </p>
- <source>
-<![CDATA[
-package org.apache.openmeetings.util.crypt;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.security.NoSuchAlgorithmException;
-
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-public class MD5Implementation implements ICrypt {
- private static final Logger log = Red5LoggerFactory.getLogger(MD5Implementation.class, webAppRootKey);
-
- /*
- * (non-Javadoc)
- * @see org.apache.openmeetings.utils.crypt.ICrypt#hash(java.lang.String)
- */
- @Override
- public String hash(String str) {
- String passPhrase = null;
- try {
- passPhrase = MD5.checksum(str);
- } catch (NoSuchAlgorithmException e) {
- log.error("Error", e);
- }
- return passPhrase;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.openmeetings.utils.crypt.ICrypt#verify(java.lang.String, java.lang.String)
- */
- @Override
- public boolean verify(String str, String hash) {
- return hash != null && hash.equals(hash(str));
- }
-}
-]]>
- </source>
- <p>To add your own Encryption-Class you need to add your class to the
- OpenMeetings-Webapp (make it available to the webapp-classpath) and
- use your custom-class-name instead of
- org.apache.openmeetings.util.crypt.MD5Implementation during the Installation or
- at runtime by editing the config-key crypt_ClassName</p>
- </section>
- <section name="Configuration of Custom Crypt-Style">
- <p>credits goto Mika for sharing his Implementation of the
- MD5Crypt-Style</p>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Howto create a Custom Crypt styles</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="Configuration of Custom Crypt-Style">
+ <p>
+ You can use custom Crypt-Types, but you should decide during
+ installation which Type of encryption you want to use. By default
+ two type are available:
+ </p>
+
+ <ul>
+ <li>org.apache.openmeetings.util.crypt.MD5Implementation - this uses common MD5
+ Crypt like PHP does, this is the default one (results in something
+ like: fe01ce2a7fbac8fafaed7c982a04e229)</li>
+ <li>org.apache.openmeetings.util.crypt.MD5CryptImplementation - does use
+ BSD-Style of encryption using a salt (results in something like:
+ $1$GMsj7F2I$5S3r9CeukXGXNwf6b4sph1)</li>
+ </ul>
+ <p>
+ You can edit the config-key during Installation or later in the
+ Administration Panel. But if you change it using the
+ Administration-Panel previous passwords might be not working anymore
+ as they are encrypted with another algorithm.
+ </p>
+ </section>
+ <section name="Configuration of Custom Crypt-Style">
+ <p>
+ To add your own crypt style you need to write a class which
+ implements the interface: org.apache.openmeetings.util.crypt.ICrypt
+ <br />
+ Example of an Implementation:
+ </p>
+ <source>
+<![CDATA[
+package org.apache.openmeetings.util.crypt;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.security.NoSuchAlgorithmException;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class MD5Implementation implements ICrypt {
+ private static final Logger log = Red5LoggerFactory.getLogger(MD5Implementation.class, webAppRootKey);
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.openmeetings.utils.crypt.ICrypt#hash(java.lang.String)
+ */
+ @Override
+ public String hash(String str) {
+ String passPhrase = null;
+ try {
+ passPhrase = MD5.checksum(str);
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Error", e);
+ }
+ return passPhrase;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.openmeetings.utils.crypt.ICrypt#verify(java.lang.String, java.lang.String)
+ */
+ @Override
+ public boolean verify(String str, String hash) {
+ return hash != null && hash.equals(hash(str));
+ }
+}
+]]>
+ </source>
+ <p>To add your own Encryption-Class you need to add your class to the
+ OpenMeetings-Webapp (make it available to the webapp-classpath) and
+ use your custom-class-name instead of
+ org.apache.openmeetings.util.crypt.MD5Implementation during the Installation or
+ at runtime by editing the config-key crypt_ClassName</p>
+ </section>
+ <section name="Configuration of Custom Crypt-Style">
+ <p>credits goto Mika for sharing his Implementation of the
+ MD5Crypt-Style</p>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/CustomRoomTypeHowTo.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/CustomRoomTypeHowTo.xml b/openmeetings-server/src/site/xdoc/CustomRoomTypeHowTo.xml
index 88a2fe6..579e423 100644
--- a/openmeetings-server/src/site/xdoc/CustomRoomTypeHowTo.xml
+++ b/openmeetings-server/src/site/xdoc/CustomRoomTypeHowTo.xml
@@ -1,104 +1,104 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Howto create a custom room type in OpenMeetings</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Why creating a custom room type in OpenMeetings">
-
- <p>If you want to create your own styled room the best thing to do in
- order to be "update-save" is to create your own custom room type. There is an empty configuration
- by default shipped with every release of OpenMeetings, the room type "custom" (ID = 5).<br/>
- <br/>
- You can use that and extend it, or you can add more room types to fit your use case.
- </p>
- <p></p>
- </section>
-
- <section name="Create your own room type class (User Interface)">
-
- <p>Lets start by creating your custom room type class.
- <br/>
- You could for example duplicate an existing room class, from <br/>
- <tt>src/modules/conference/flexibleConferenceRoom</tt> folder, for example the
- flexibleConferenceRoom.lzx: Generate a duplicate, change the name, for example to
- myCustomConferenceRoom.lzx and edit the class name inside the file name="flexibleConferenceRoom" to
- name="myCustomConferenceRoom". Also don't miss to add an entry to library.lzx so that the compiler
- will find your new class.
- </p>
-
- </section>
-
- <section name="Create nesseccary entries in configuration tables">
-
- <p>You first need to create a number of configuration files </p>
- <ul>
- <li>To have your roomtype available everytime you install OpenMeetings you need to add
- it to the default rooms: <tt>ImportInitvalues.java Method: loadDefaultRooms()</tt>. Add your entry here.
- You can choose any random name for the room. The ID is the important trigger for the room type
- to identify later. You need to run the installer so that your new room type is in the database.</li>
-
- <li>Add your room type in the default module configuration:
- <tt>src/base/moduleConfiguration.lzx</tt>,
- here you need to add a default class name for your room type </li>
-
- <li>Add your room type in the real configuration: public/config.xml, add a new entry.
- <br/>
- You should fix also the file <tt>public/config.xsd</tt> that is the Schema file for the public/config.xml.
- </li>
-
- <li>Add a parser entry to modify the room type mapping:
- <tt>base/mainMethods.lzx method: myinit</tt>. You
- can see some example parsing, you should add your one similar to the existing room types.</li>
-
- </ul>
-
- </section>
-
- <section name="Link your room type config with your room type class ">
-
- <p>Now you need to make sure that everytime the conference room is created
- your new class "myCustomConferenceRoom" is used. There are 3 places you need to add your mapping.</p>
-
- <ul>
- <li>In the global mapping:
- <tt>base/mainMethods.lzx method name="setRoomValues"</tt>
- </li>
- <li>In file:
- <tt>modules/conference/conference/roomListItem.lzx method name="initRoom"</tt>
- </li>
- <li>In file:
- <tt>modules/invitation/autoloaderBarOnly.lzx netRemoteCallHib name="setUsernameAndSession"</tt>
- </li>
- </ul>
-
- <p>Thats it. You can add/edit/delete your room with the new room type in the Administration > Rooms interface of
- OpenMeetings like any other room.</p>
- <p>If you need to have this room type available as option in the Calendar UI, you need to add it to the combobox manually.</p>
-
- </section>
-
-
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Howto create a custom room type in OpenMeetings</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Why creating a custom room type in OpenMeetings">
+
+ <p>If you want to create your own styled room the best thing to do in
+ order to be "update-save" is to create your own custom room type. There is an empty configuration
+ by default shipped with every release of OpenMeetings, the room type "custom" (ID = 5).<br/>
+ <br/>
+ You can use that and extend it, or you can add more room types to fit your use case.
+ </p>
+ <p></p>
+ </section>
+
+ <section name="Create your own room type class (User Interface)">
+
+ <p>Lets start by creating your custom room type class.
+ <br/>
+ You could for example duplicate an existing room class, from <br/>
+ <tt>src/modules/conference/flexibleConferenceRoom</tt> folder, for example the
+ flexibleConferenceRoom.lzx: Generate a duplicate, change the name, for example to
+ myCustomConferenceRoom.lzx and edit the class name inside the file name="flexibleConferenceRoom" to
+ name="myCustomConferenceRoom". Also don't miss to add an entry to library.lzx so that the compiler
+ will find your new class.
+ </p>
+
+ </section>
+
+ <section name="Create nesseccary entries in configuration tables">
+
+ <p>You first need to create a number of configuration files </p>
+ <ul>
+ <li>To have your roomtype available everytime you install OpenMeetings you need to add
+ it to the default rooms: <tt>ImportInitvalues.java Method: loadDefaultRooms()</tt>. Add your entry here.
+ You can choose any random name for the room. The ID is the important trigger for the room type
+ to identify later. You need to run the installer so that your new room type is in the database.</li>
+
+ <li>Add your room type in the default module configuration:
+ <tt>src/base/moduleConfiguration.lzx</tt>,
+ here you need to add a default class name for your room type </li>
+
+ <li>Add your room type in the real configuration: public/config.xml, add a new entry.
+ <br/>
+ You should fix also the file <tt>public/config.xsd</tt> that is the Schema file for the public/config.xml.
+ </li>
+
+ <li>Add a parser entry to modify the room type mapping:
+ <tt>base/mainMethods.lzx method: myinit</tt>. You
+ can see some example parsing, you should add your one similar to the existing room types.</li>
+
+ </ul>
+
+ </section>
+
+ <section name="Link your room type config with your room type class ">
+
+ <p>Now you need to make sure that everytime the conference room is created
+ your new class "myCustomConferenceRoom" is used. There are 3 places you need to add your mapping.</p>
+
+ <ul>
+ <li>In the global mapping:
+ <tt>base/mainMethods.lzx method name="setRoomValues"</tt>
+ </li>
+ <li>In file:
+ <tt>modules/conference/conference/roomListItem.lzx method name="initRoom"</tt>
+ </li>
+ <li>In file:
+ <tt>modules/invitation/autoloaderBarOnly.lzx netRemoteCallHib name="setUsernameAndSession"</tt>
+ </li>
+ </ul>
+
+ <p>Thats it. You can add/edit/delete your room with the new room type in the Administration > Rooms interface of
+ OpenMeetings like any other room.</p>
+ <p>If you need to have this room type available as option in the Calendar UI, you need to add it to the combobox manually.</p>
+
+ </section>
+
+
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/Dashboard.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/Dashboard.xml b/openmeetings-server/src/site/xdoc/Dashboard.xml
index a67504f..7c43c94 100644
--- a/openmeetings-server/src/site/xdoc/Dashboard.xml
+++ b/openmeetings-server/src/site/xdoc/Dashboard.xml
@@ -1,70 +1,70 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Changing Dashboard</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Changing Dashboard">
-
- <p>You can configure the tabs that are visible by default at bottom
- of the dashboard. To edit the settings, login as admin and goto
- Administration > Configuration </p>
- <p></p>
- <table>
- <tr>
- <th> Config-key </th>
- <th> Values </th>
- <th> Meaning </th>
- </tr>
- <tr>
- <td> dashboard.show.myrooms </td>
- <td> 0 or 1 </td>
- <td> If the MyRooms tab should be visible or not </td>
- </tr>
- <tr>
- <td> dashboard.show.chat </td>
- <td> 0 or 1 </td>
- <td> If the Chat tab should be visible or not </td>
- </tr>
- <tr>
- <td> dashboard.show.rssfeed </td>
- <td> 0 or 1 </td>
- <td> If the RSS-Feed tab should be visible or not </td>
- </tr>
- <tr>
- <td> rss_feed1 </td>
- <td> http-URL </td>
- <td> ATOM-Feed URL for the dashboard RSS Tab </td>
- </tr>
- <tr>
- <td> rss_feed2 </td>
- <td> http-URL </td>
- <td> ATOM-Feed URL for the dashboard RSS Tab </td>
- </tr>
- </table>
- <p></p>
- <p>Changes are immediately online, no need to restart anything. </p>
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Changing Dashboard</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Changing Dashboard">
+
+ <p>You can configure the tabs that are visible by default at bottom
+ of the dashboard. To edit the settings, login as admin and goto
+ Administration > Configuration </p>
+ <p></p>
+ <table>
+ <tr>
+ <th> Config-key </th>
+ <th> Values </th>
+ <th> Meaning </th>
+ </tr>
+ <tr>
+ <td> dashboard.show.myrooms </td>
+ <td> 0 or 1 </td>
+ <td> If the MyRooms tab should be visible or not </td>
+ </tr>
+ <tr>
+ <td> dashboard.show.chat </td>
+ <td> 0 or 1 </td>
+ <td> If the Chat tab should be visible or not </td>
+ </tr>
+ <tr>
+ <td> dashboard.show.rssfeed </td>
+ <td> 0 or 1 </td>
+ <td> If the RSS-Feed tab should be visible or not </td>
+ </tr>
+ <tr>
+ <td> rss_feed1 </td>
+ <td> http-URL </td>
+ <td> ATOM-Feed URL for the dashboard RSS Tab </td>
+ </tr>
+ <tr>
+ <td> rss_feed2 </td>
+ <td> http-URL </td>
+ <td> ATOM-Feed URL for the dashboard RSS Tab </td>
+ </tr>
+ </table>
+ <p></p>
+ <p>Changes are immediately online, no need to restart anything. </p>
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/DrupalPlugin.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/DrupalPlugin.xml b/openmeetings-server/src/site/xdoc/DrupalPlugin.xml
index 0fe7f2e..6b6e0ac 100644
--- a/openmeetings-server/src/site/xdoc/DrupalPlugin.xml
+++ b/openmeetings-server/src/site/xdoc/DrupalPlugin.xml
@@ -1,76 +1,76 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Drupal Plugin</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Drupal Plugin for OpenMeetings">
- <p>
- Plugin for Drupal currently is not open source.
- Please contact <a href="commercial-support.html" target="_blank" rel="nofollow">Commercial Support</a> to get it.
- </p>
- </section>
-
- <section name="Installation of the Drupal Plugin for Apache OpenMeetings">
- <p>
- You simply download the ZIP or TAR package and unzip it to Drupal "mod" directory.
- <br/>
- For a detailed description on how to install plugins in Drupal please review their
- <a href="http://drupal.org/documentation/install/modules-themes" target="_blank" rel="nofollow">handbook</a>.
- <br />
- Then you visit the module interface of Drupal, where you will find the new module.
- You should switch it to "enabled" to get the "Configure" and "Permissions" buttons.
- </p>
- <a class="fancybox-buttons" href="images/drupal_module_installation.png">
- <img src="images/drupal_module_installation.png" alt="" width="600"
- height="150" />
- </a>
- <p>
- In the configuration you enter the auth data to access your Apache OpenMeetings server:
- </p>
- <a class="fancybox-buttons" href="images/drupal_module_configuration.png">
- <img src="images/drupal_module_configuration.png" alt="" width="600"
- height="340" />
- </a>
- </section>
-
- <section name="Adding a new conference room to Drupal">
-
- <p>
- After installation of the plugin you can go to the front page in Drupal and add a new content item
- "OpenMeetings Rooms" => "Add New Room". You may find following configuration values for each
- conference room:
- </p>
- <a class="fancybox-buttons" href="images/drupal_room_configuration.png">
- <img src="images/drupal_room_configuration.png" alt="" width="600"
- height="400" />
- </a>
- </section>
-
- <section name="Demo video">
- <p>The demo video of Drupal plugin show you the plugin in action </p>
- <iframe width="640" height="390" src="http://www.youtube.com/embed/LmMIKFCLRV4" frameborder="0" allowfullscreen=""></iframe>
- <iframe width="640" height="390" src="http://www.youtube.com/embed/k5PF3vdVUn0" frameborder="0" allowfullscreen=""></iframe>
- </section>
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Drupal Plugin</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Drupal Plugin for OpenMeetings">
+ <p>
+ Plugin for Drupal currently is not open source.
+ Please contact <a href="commercial-support.html" target="_blank" rel="nofollow">Commercial Support</a> to get it.
+ </p>
+ </section>
+
+ <section name="Installation of the Drupal Plugin for Apache OpenMeetings">
+ <p>
+ You simply download the ZIP or TAR package and unzip it to Drupal "mod" directory.
+ <br/>
+ For a detailed description on how to install plugins in Drupal please review their
+ <a href="http://drupal.org/documentation/install/modules-themes" target="_blank" rel="nofollow">handbook</a>.
+ <br />
+ Then you visit the module interface of Drupal, where you will find the new module.
+ You should switch it to "enabled" to get the "Configure" and "Permissions" buttons.
+ </p>
+ <a class="fancybox-buttons" href="images/drupal_module_installation.png">
+ <img src="images/drupal_module_installation.png" alt="" width="600"
+ height="150" />
+ </a>
+ <p>
+ In the configuration you enter the auth data to access your Apache OpenMeetings server:
+ </p>
+ <a class="fancybox-buttons" href="images/drupal_module_configuration.png">
+ <img src="images/drupal_module_configuration.png" alt="" width="600"
+ height="340" />
+ </a>
+ </section>
+
+ <section name="Adding a new conference room to Drupal">
+
+ <p>
+ After installation of the plugin you can go to the front page in Drupal and add a new content item
+ "OpenMeetings Rooms" => "Add New Room". You may find following configuration values for each
+ conference room:
+ </p>
+ <a class="fancybox-buttons" href="images/drupal_room_configuration.png">
+ <img src="images/drupal_room_configuration.png" alt="" width="600"
+ height="400" />
+ </a>
+ </section>
+
+ <section name="Demo video">
+ <p>The demo video of Drupal plugin show you the plugin in action </p>
+ <iframe width="640" height="390" src="http://www.youtube.com/embed/LmMIKFCLRV4" frameborder="0" allowfullscreen=""></iframe>
+ <iframe width="640" height="390" src="http://www.youtube.com/embed/k5PF3vdVUn0" frameborder="0" allowfullscreen=""></iframe>
+ </section>
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/EditTemplates.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/EditTemplates.xml b/openmeetings-server/src/site/xdoc/EditTemplates.xml
index acc5e1c..0846c24 100644
--- a/openmeetings-server/src/site/xdoc/EditTemplates.xml
+++ b/openmeetings-server/src/site/xdoc/EditTemplates.xml
@@ -1,64 +1,64 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>Edit Templates</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Changing Labels and text strings">
- <p>
- All language string should be localized and stored in the language
- section. You have a full featured language editor with every
- installation of OpenMeetings, check out the
- <a href="LanguageEditor.html">LanguageEditor</a>
- .
- </p>
- <p>
- To lookup the labelids in the GUI you can simply run OpenMeetings
- client with the debug enabled. That way every text-string has the
- labelid in brackets additionally in the textfield. To start the
- client in debug mode please check "Tips and Tricks" section of
- <a href="installation.html" rel="nofollow">Installation guide</a>
- </p>
- </section>
- <section name="Changing layout, adding footers in emails">
- <p>If you would like to change the standard email layout or add for
- example some footer in every email you have to change the email
- templates.
- </p>
- <div>To do that:
- <ul>
- <li>Stop the Red5/OpenMeetings service</li>
- <li>Goto: <tt>$RED5_HOME/webapps/openmeetings/WEB-INF/classes/org/apache/openmeetings/service/mail/template/</tt></li>
- <li>Change HTML file(s) according to your needs, BUT do not remove
- elements with <tt>wicket:id</tt> attributes! You can hide those
- elements by adding <tt>wicket:visible="false"</tt> attribute
- </li>
- <li>Starting OM 3.1.4 you can change Appointment reminder subject by
- modifying "subject" fragment in file
- <tt>$RED5_HOME/webapps/openmeetings/WEB-INF/classes/org/apache/openmeetings/service/mail/template/subject/AbstractSubjectEmailTemplate.html</tt>
- as described in previous bullet.
- </li>
- <li>Start the Red5/OpenMeetings service</li>
- </ul>
- </div>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>Edit Templates</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Changing Labels and text strings">
+ <p>
+ All language string should be localized and stored in the language
+ section. You have a full featured language editor with every
+ installation of OpenMeetings, check out the
+ <a href="LanguageEditor.html">LanguageEditor</a>
+ .
+ </p>
+ <p>
+ To lookup the labelids in the GUI you can simply run OpenMeetings
+ client with the debug enabled. That way every text-string has the
+ labelid in brackets additionally in the textfield. To start the
+ client in debug mode please check "Tips and Tricks" section of
+ <a href="installation.html" rel="nofollow">Installation guide</a>
+ </p>
+ </section>
+ <section name="Changing layout, adding footers in emails">
+ <p>If you would like to change the standard email layout or add for
+ example some footer in every email you have to change the email
+ templates.
+ </p>
+ <div>To do that:
+ <ul>
+ <li>Stop the Red5/OpenMeetings service</li>
+ <li>Goto: <tt>$RED5_HOME/webapps/openmeetings/WEB-INF/classes/org/apache/openmeetings/service/mail/template/</tt></li>
+ <li>Change HTML file(s) according to your needs, BUT do not remove
+ elements with <tt>wicket:id</tt> attributes! You can hide those
+ elements by adding <tt>wicket:visible="false"</tt> attribute
+ </li>
+ <li>Starting OM 3.1.4 you can change Appointment reminder subject by
+ modifying "subject" fragment in file
+ <tt>$RED5_HOME/webapps/openmeetings/WEB-INF/classes/org/apache/openmeetings/service/mail/template/subject/AbstractSubjectEmailTemplate.html</tt>
+ as described in previous bullet.
+ </li>
+ <li>Start the Red5/OpenMeetings service</li>
+ </ul>
+ </div>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml b/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
index 542bdd2..57dfbda 100644
--- a/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
+++ b/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
@@ -1,313 +1,313 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>List of general configuration options</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="List of general configuration options">
- <p>In Administration > Configuration there are a number of
- configuration values.
- </p>
- <p></p>
- <table>
- <tr>
- <th> key </th>
- <th> default </th>
- <th> meaning </th>
- <th> availabe since OpenMeetings version </th>
- </tr>
- <tr>
- <td> dashboard.show.myrooms </td>
- <td> 0 or 1 </td>
- <td> Dashboard: If the MyRooms widget should be visible or not </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> dashboard.show.chat </td>
- <td> 0 or 1 </td>
- <td> Dashboard: If the Chat widget should be visible or not </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> dashboard.show.rssfeed </td>
- <td> 0 or 1 </td>
- <td> Dashboard: If the RSS-Feed widget should be visible or not </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> rss_feed1 </td>
- <td> http-URL </td>
- <td> Dashboard: ATOM-Feed URL for the dashboard RSS Tab </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> rss_feed2 </td>
- <td> http-URL </td>
- <td> Dashboard: ATOM-Feed URL for the dashboard RSS Tab </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> ldap_default_id </td>
- <td> 0 </td>
- <td> Ldap domain selected by default in the login screen </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> user.login.minimum.length </td>
- <td> 4 </td>
- <td> minimum chars required for the login to create a user </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> user.pass.minimum.length </td>
- <td> 4 </td>
- <td> minimum chars required for the password to create a
- user
- </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> number.minutes.reminder.send </td>
- <td> 15 </td>
- <td> minutes the one-time reminder in the calender is
- send, set to 0 to disable reminder
- </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> max_upload_size </td>
- <td> 1073741824 </td>
- <td> Maximum size of upload file (bytes) 1073741824 bytes
- = 1GB
- </td>
- <td> 1.8.x </td>
- </tr>
- <tr>
- <td> show.whiteboard.draw.status </td>
- <td> 0 </td>
- <td> Display name of the user who draw the current object
- (User Name auto-disapper after 3 seconds.
- </td>
- <td> 1.8.x </td>
- </tr>
- <tr>
- <td> smtp_server </td>
- <td> localhost </td>
- <td> this is the smtp server to send messages </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> smtp_port </td>
- <td> 25 </td>
- <td> this is the smtp server port normally 25 </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> email_username </td>
- <td> </td>
- <td> System auth email username </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> email_userpass </td>
- <td> </td>
- <td> System auth email password </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> mail.smtp.starttls.enable </td>
- <td> 0 </td>
- <td> Enable TLS 1=true, 0=false </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> mail.smtp.connection.timeout </td>
- <td> 30000 </td>
- <td> Socket connection timeout value in milliseconds. Default is 30 seconds (30000). </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> mail.smtp.timeout </td>
- <td> 30000 </td>
- <td> Socket I/O timeout value in milliseconds. Default is 30 seconds (30000). </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> system_email_addr </td>
- <td> noreply@openmeetings.apache.org </td>
- <td> all send e-mails by the system will have this address </td>
- <td> 1.9.x </td>
- </tr>
- <tr>
- <td> inviter.email.as.replyto </td>
- <td> 1 </td>
- <td> Set inviter's email address as ReplyTo in email invitations (1 == set, 0 == NOT set) </td>
- <td> 2.0.x </td>
- </tr>
- <tr>
- <td> office.path </td>
- <td> </td>
- <td> The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically </td>
- <td> 2.0.x </td>
- </tr>
- <tr>
- <td> default.landing.zone </td>
- <td> user/dashboard </td>
- <td> Area to be shown to the user after login. Possible values are: user/dashboard, user/calendar, user/record, rooms/my, rooms/group, rooms/public, admin/user, admin/connection
- , admin/group, admin/room, admin/config, admin/lang, admin/ldap, admin/backup, admin/server, admin/oauth2 </td>
- <td> 2.1.x, <b> values are changed in 3.0.0</b> </td>
- </tr>
- <tr>
- <td> sms.provider </td>
- <td> </td>
- <td> SMS service provider (bulksms.http.1) </td>
- <td> 2.1.x </td>
- </tr>
- <tr>
- <td> sms.Username </td>
- <td> </td>
- <td> Login for SMS service provider </td>
- <td> 2.1.x </td>
- </tr>
- <tr>
- <td> sms.Userpass </td>
- <td> </td>
- <td> Password for SMS service provider </td>
- <td> 2.1.x </td>
- </tr>
- <tr>
- <td> sms.subject </td>
- <td> </td>
- <td> Subject of SMS reminder message </td>
- <td> 2.1.x </td>
- </tr>
- <tr>
- <td> swftools_zoom </td>
- <td> 100 </td>
- <td> DPI for conversion of PDF to SWF (should be an integer between 50 and 600 with a default value of 100 DPI) </td>
- <td> 2.0.x </td>
- </tr>
- <tr>
- <td> swftools_jpegquality </td>
- <td> 85 </td>
- <td> Compression quality for conversion of PDF to SWF (should be an integer between 1 and 100, with a default value of 85) </td>
- <td> 2.0.x </td>
- </tr>
- <tr>
- <td> sendEmailAtRegister </td>
- <td> 0 </td>
- <td> User get a EMail with their Account data. Values: 0(No) or 1(Yes) </td>
- <td> 2.0.x </td>
- </tr>
- <tr>
- <td> sendEmailWithVerficationCode </td>
- <td> 0 </td>
- <td> User must activate their account by clicking on the
- activation-link in the registering Email. Values: 0(No) or 1(Yes)
- It makes no sense to make this(sendEmailWithVerficationCode) 1(Yes) while
- sendEmailAtRegister is 0(No) cause you need
- to send a EMail. </td>
- <td> 2.0.x </td>
- </tr>
- <tr>
- <td> redirect.url.for.external.users </td>
- <td> </td>
- <td> Users entered the room via invitationHash or secureHash will be redirected to this URL on connection lost </td>
- <td> 2.2.x </td>
- </tr>
- <tr>
- <td> allow_frontend_register </td>
- <td> (configurable during install) </td>
- <td> Is user register available on login screen </td>
- <td> 1.8.x </td>
- </tr>
- <tr>
- <td> allow.soap.register </td>
- <td> 1 </td>
- <td> Is user register available via SOAP/REST </td>
- <td> 3.0.x </td>
- </tr>
- <tr>
- <td> allow.oauth.register </td>
- <td> 1 </td>
- <td> Is user register available via OAuth </td>
- <td> 3.0.x </td>
- </tr>
- <tr>
- <td> application.base.url </td>
- <td> http://localhost:5080/openmeetings </td>
- <td> Base URL your OPenmeetings installation will be accessible at. </td>
- <td> 3.0.2 </td>
- </tr>
- <tr>
- <td> default.quality.screensharing </td>
- <td> 1 </td>
- <td> Default selection in ScreenSharing Quality:<br/>
- 0 - bigger frame rate, no resize<br/>
- 1 - no resize<br/>
- 2 - size == 1/2 of selected area<br/>
- 3 - size == 3/8 of selected area </td>
- <td> 3.0.3 </td>
- </tr>
- <tr>
- <td> default.fps.screensharing </td>
- <td> 10 </td>
- <td> Default selection in ScreenSharing FPS. </td>
- <td> 3.0.3 </td>
- </tr>
- <tr>
- <td> screensharing.fps.show </td>
- <td> true </td>
- <td> Is screensharing FPS should be displayed or not (true/false). </td>
- <td> 3.0.3 </td>
- </tr>
- <tr>
- <td> screensharing.allow.remote </td>
- <td> true </td>
- <td> Is remote control will be enabled while screensharing. Allowing remote control will be not possible in case it is set to 'false' (true/false). </td>
- <td> 3.0.4 </td>
- </tr>
- <tr>
- <td> calendar.firstday </td>
- <td> 0 </td>
- <td> The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc. </td>
- <td> 3.0.4 </td>
- </tr>
- <tr>
- <td> google.analytics.code </td>
- <td> </td>
- <td> Code for Google Analytics. </td>
- <td> 3.1.0 </td>
- </tr>
- <tr>
- <td> header.x.frame.options </td>
- <td> SAMEORIGIN </td>
- <td> Value for 'X-Frame-Options' header, more info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options </td>
- <td> 3.3.0 </td>
- </tr>
- <tr>
- <td> header.content.security.policy </td>
- <td> default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; </td>
- <td> Value for 'Content-Security-Policy' header, have to be modified to enable Google analytics site: https://content-security-policy.com/ </td>
- <td> 3.3.0 </td>
- </tr>
- </table>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>List of general configuration options</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="List of general configuration options">
+ <p>In Administration > Configuration there are a number of
+ configuration values.
+ </p>
+ <p></p>
+ <table>
+ <tr>
+ <th> key </th>
+ <th> default </th>
+ <th> meaning </th>
+ <th> availabe since OpenMeetings version </th>
+ </tr>
+ <tr>
+ <td> dashboard.show.myrooms </td>
+ <td> 0 or 1 </td>
+ <td> Dashboard: If the MyRooms widget should be visible or not </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> dashboard.show.chat </td>
+ <td> 0 or 1 </td>
+ <td> Dashboard: If the Chat widget should be visible or not </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> dashboard.show.rssfeed </td>
+ <td> 0 or 1 </td>
+ <td> Dashboard: If the RSS-Feed widget should be visible or not </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> rss_feed1 </td>
+ <td> http-URL </td>
+ <td> Dashboard: ATOM-Feed URL for the dashboard RSS Tab </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> rss_feed2 </td>
+ <td> http-URL </td>
+ <td> Dashboard: ATOM-Feed URL for the dashboard RSS Tab </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> ldap_default_id </td>
+ <td> 0 </td>
+ <td> Ldap domain selected by default in the login screen </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> user.login.minimum.length </td>
+ <td> 4 </td>
+ <td> minimum chars required for the login to create a user </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> user.pass.minimum.length </td>
+ <td> 4 </td>
+ <td> minimum chars required for the password to create a
+ user
+ </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> number.minutes.reminder.send </td>
+ <td> 15 </td>
+ <td> minutes the one-time reminder in the calender is
+ send, set to 0 to disable reminder
+ </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> max_upload_size </td>
+ <td> 1073741824 </td>
+ <td> Maximum size of upload file (bytes) 1073741824 bytes
+ = 1GB
+ </td>
+ <td> 1.8.x </td>
+ </tr>
+ <tr>
+ <td> show.whiteboard.draw.status </td>
+ <td> 0 </td>
+ <td> Display name of the user who draw the current object
+ (User Name auto-disapper after 3 seconds.
+ </td>
+ <td> 1.8.x </td>
+ </tr>
+ <tr>
+ <td> smtp_server </td>
+ <td> localhost </td>
+ <td> this is the smtp server to send messages </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> smtp_port </td>
+ <td> 25 </td>
+ <td> this is the smtp server port normally 25 </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> email_username </td>
+ <td> </td>
+ <td> System auth email username </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> email_userpass </td>
+ <td> </td>
+ <td> System auth email password </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> mail.smtp.starttls.enable </td>
+ <td> 0 </td>
+ <td> Enable TLS 1=true, 0=false </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> mail.smtp.connection.timeout </td>
+ <td> 30000 </td>
+ <td> Socket connection timeout value in milliseconds. Default is 30 seconds (30000). </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> mail.smtp.timeout </td>
+ <td> 30000 </td>
+ <td> Socket I/O timeout value in milliseconds. Default is 30 seconds (30000). </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> system_email_addr </td>
+ <td> noreply@openmeetings.apache.org </td>
+ <td> all send e-mails by the system will have this address </td>
+ <td> 1.9.x </td>
+ </tr>
+ <tr>
+ <td> inviter.email.as.replyto </td>
+ <td> 1 </td>
+ <td> Set inviter's email address as ReplyTo in email invitations (1 == set, 0 == NOT set) </td>
+ <td> 2.0.x </td>
+ </tr>
+ <tr>
+ <td> office.path </td>
+ <td> </td>
+ <td> The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically </td>
+ <td> 2.0.x </td>
+ </tr>
+ <tr>
+ <td> default.landing.zone </td>
+ <td> user/dashboard </td>
+ <td> Area to be shown to the user after login. Possible values are: user/dashboard, user/calendar, user/record, rooms/my, rooms/group, rooms/public, admin/user, admin/connection
+ , admin/group, admin/room, admin/config, admin/lang, admin/ldap, admin/backup, admin/server, admin/oauth2 </td>
+ <td> 2.1.x, <b> values are changed in 3.0.0</b> </td>
+ </tr>
+ <tr>
+ <td> sms.provider </td>
+ <td> </td>
+ <td> SMS service provider (bulksms.http.1) </td>
+ <td> 2.1.x </td>
+ </tr>
+ <tr>
+ <td> sms.Username </td>
+ <td> </td>
+ <td> Login for SMS service provider </td>
+ <td> 2.1.x </td>
+ </tr>
+ <tr>
+ <td> sms.Userpass </td>
+ <td> </td>
+ <td> Password for SMS service provider </td>
+ <td> 2.1.x </td>
+ </tr>
+ <tr>
+ <td> sms.subject </td>
+ <td> </td>
+ <td> Subject of SMS reminder message </td>
+ <td> 2.1.x </td>
+ </tr>
+ <tr>
+ <td> swftools_zoom </td>
+ <td> 100 </td>
+ <td> DPI for conversion of PDF to SWF (should be an integer between 50 and 600 with a default value of 100 DPI) </td>
+ <td> 2.0.x </td>
+ </tr>
+ <tr>
+ <td> swftools_jpegquality </td>
+ <td> 85 </td>
+ <td> Compression quality for conversion of PDF to SWF (should be an integer between 1 and 100, with a default value of 85) </td>
+ <td> 2.0.x </td>
+ </tr>
+ <tr>
+ <td> sendEmailAtRegister </td>
+ <td> 0 </td>
+ <td> User get a EMail with their Account data. Values: 0(No) or 1(Yes) </td>
+ <td> 2.0.x </td>
+ </tr>
+ <tr>
+ <td> sendEmailWithVerficationCode </td>
+ <td> 0 </td>
+ <td> User must activate their account by clicking on the
+ activation-link in the registering Email. Values: 0(No) or 1(Yes)
+ It makes no sense to make this(sendEmailWithVerficationCode) 1(Yes) while
+ sendEmailAtRegister is 0(No) cause you need
+ to send a EMail. </td>
+ <td> 2.0.x </td>
+ </tr>
+ <tr>
+ <td> redirect.url.for.external.users </td>
+ <td> </td>
+ <td> Users entered the room via invitationHash or secureHash will be redirected to this URL on connection lost </td>
+ <td> 2.2.x </td>
+ </tr>
+ <tr>
+ <td> allow_frontend_register </td>
+ <td> (configurable during install) </td>
+ <td> Is user register available on login screen </td>
+ <td> 1.8.x </td>
+ </tr>
+ <tr>
+ <td> allow.soap.register </td>
+ <td> 1 </td>
+ <td> Is user register available via SOAP/REST </td>
+ <td> 3.0.x </td>
+ </tr>
+ <tr>
+ <td> allow.oauth.register </td>
+ <td> 1 </td>
+ <td> Is user register available via OAuth </td>
+ <td> 3.0.x </td>
+ </tr>
+ <tr>
+ <td> application.base.url </td>
+ <td> http://localhost:5080/openmeetings </td>
+ <td> Base URL your OPenmeetings installation will be accessible at. </td>
+ <td> 3.0.2 </td>
+ </tr>
+ <tr>
+ <td> default.quality.screensharing </td>
+ <td> 1 </td>
+ <td> Default selection in ScreenSharing Quality:<br/>
+ 0 - bigger frame rate, no resize<br/>
+ 1 - no resize<br/>
+ 2 - size == 1/2 of selected area<br/>
+ 3 - size == 3/8 of selected area </td>
+ <td> 3.0.3 </td>
+ </tr>
+ <tr>
+ <td> default.fps.screensharing </td>
+ <td> 10 </td>
+ <td> Default selection in ScreenSharing FPS. </td>
+ <td> 3.0.3 </td>
+ </tr>
+ <tr>
+ <td> screensharing.fps.show </td>
+ <td> true </td>
+ <td> Is screensharing FPS should be displayed or not (true/false). </td>
+ <td> 3.0.3 </td>
+ </tr>
+ <tr>
+ <td> screensharing.allow.remote </td>
+ <td> true </td>
+ <td> Is remote control will be enabled while screensharing. Allowing remote control will be not possible in case it is set to 'false' (true/false). </td>
+ <td> 3.0.4 </td>
+ </tr>
+ <tr>
+ <td> calendar.firstday </td>
+ <td> 0 </td>
+ <td> The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc. </td>
+ <td> 3.0.4 </td>
+ </tr>
+ <tr>
+ <td> google.analytics.code </td>
+ <td> </td>
+ <td> Code for Google Analytics. </td>
+ <td> 3.1.0 </td>
+ </tr>
+ <tr>
+ <td> header.x.frame.options </td>
+ <td> SAMEORIGIN </td>
+ <td> Value for 'X-Frame-Options' header, more info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options </td>
+ <td> 3.3.0 </td>
+ </tr>
+ <tr>
+ <td> header.content.security.policy </td>
+ <td> default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; </td>
+ <td> Value for 'Content-Security-Policy' header, have to be modified to enable Google analytics site: https://content-security-policy.com/ </td>
+ <td> 3.3.0 </td>
+ </tr>
+ </table>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/GetVersionInfo.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/GetVersionInfo.xml b/openmeetings-server/src/site/xdoc/GetVersionInfo.xml
index 55279bc..55bc6e9 100644
--- a/openmeetings-server/src/site/xdoc/GetVersionInfo.xml
+++ b/openmeetings-server/src/site/xdoc/GetVersionInfo.xml
@@ -1,73 +1,73 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
-
- <properties>
- <title>How to check which Openmeetings version running</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="How to check which Openmeetings version running (3.0.0 - )">
- <p>Use Top Menu -> About</p>
- </section>
- <section name="How to check which Openmeetings version running (2.1.1 - )">
- <p>The version is printed into openmeetings.log file</p>
- <p>
- Run openmeetings<br/>
- Open OM_HOME/log/openmeetings.log
- </p>
- <p>You get something like this: </p>
- <source>
- ################################################################################
- # Openmeetings is up #
- # 3.2.2-SNAPSHOT 943f172e9d63c3ab7210f895fdede1ad7fa6aebc 2017/05/01 05:56 #
- # and ready to use #
- ################################################################################
- </source>
- </section>
- <section name="How to check which Openmeetings version running (1.8.0 - 2.1.0)">
- <p>If you need to know what version of OpenMeetings you are running,
- you can check that by the file: openmeetings-*.jar
- </p>
- <p>
- Unzip: /webapps/openmeetings/WEB-INF/lib/openmeetings-*.jar (jars are
- zips)
- <br />
- <br />
- In the resulting unzipped folder open the file to read:
- /META-INF/MANIFEST.MF
- </p>
- <p>You get something like this: </p>
- <source>
-<![CDATA[
-Manifest-Version: 1.0
-Built-By: OpenMeetings - http://openmeetings.apache.org
-Built-On: 2017/05/01 05:41
-Git-Revision: 943f172e9d63c3ab7210f895fdede1ad7fa6aebc
-]]>
- </source>
- <p>This version info is available since version 1.8.0. If you have an
- older version as version 1.8.0 then you might simply check the
- language files and the labelid in there, the numbers of labels are
- almost always unique in the versions. </p>
-
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>How to check which Openmeetings version running</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="How to check which Openmeetings version running (3.0.0 - )">
+ <p>Use Top Menu -> About</p>
+ </section>
+ <section name="How to check which Openmeetings version running (2.1.1 - )">
+ <p>The version is printed into openmeetings.log file</p>
+ <p>
+ Run openmeetings<br/>
+ Open OM_HOME/log/openmeetings.log
+ </p>
+ <p>You get something like this: </p>
+ <source>
+ ################################################################################
+ # Openmeetings is up #
+ # 3.2.2-SNAPSHOT 943f172e9d63c3ab7210f895fdede1ad7fa6aebc 2017/05/01 05:56 #
+ # and ready to use #
+ ################################################################################
+ </source>
+ </section>
+ <section name="How to check which Openmeetings version running (1.8.0 - 2.1.0)">
+ <p>If you need to know what version of OpenMeetings you are running,
+ you can check that by the file: openmeetings-*.jar
+ </p>
+ <p>
+ Unzip: /webapps/openmeetings/WEB-INF/lib/openmeetings-*.jar (jars are
+ zips)
+ <br />
+ <br />
+ In the resulting unzipped folder open the file to read:
+ /META-INF/MANIFEST.MF
+ </p>
+ <p>You get something like this: </p>
+ <source>
+<![CDATA[
+Manifest-Version: 1.0
+Built-By: OpenMeetings - http://openmeetings.apache.org
+Built-On: 2017/05/01 05:41
+Git-Revision: 943f172e9d63c3ab7210f895fdede1ad7fa6aebc
+]]>
+ </source>
+ <p>This version info is available since version 1.8.0. If you have an
+ older version as version 1.8.0 then you might simply check the
+ language files and the labelid in there, the numbers of labels are
+ almost always unique in the versions. </p>
+
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/HotKeys.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/HotKeys.xml b/openmeetings-server/src/site/xdoc/HotKeys.xml
index 1d76a57..e4d5d30 100644
--- a/openmeetings-server/src/site/xdoc/HotKeys.xml
+++ b/openmeetings-server/src/site/xdoc/HotKeys.xml
@@ -1,54 +1,54 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Hot Keys</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="Keys table">
- <table>
- <tr>
- <th>Key</th>
- <th>Functionality</th>
- <th>Configurable</th>
- <th>Config Key</th>
- </tr>
- <tr>
- <td>F12 (code 123)</td>
- <td>A hot key code for the 'give exclusive audio' functionality.</td>
- <td>Yes</td>
- <td>exclusive.audio.keycode</td>
- </tr>
- <tr>
- <td>F8 (code 119)</td>
- <td>If 1 or 2 video windows are present in the room they will be
- "rearranged" to take all the place available</td>
- <td>No</td>
- <td>
- </td>
- </tr>
- <tr>
- <td>F7 (code 118)</td>
- <td>A hot key code for the 'mute/unmute audio' functionality.</td>
- <td>Yes</td>
- <td>mute.keycode</td>
- </tr>
- </table>
- </section>
- </body>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Hot Keys</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="Keys table">
+ <table>
+ <tr>
+ <th>Key</th>
+ <th>Functionality</th>
+ <th>Configurable</th>
+ <th>Config Key</th>
+ </tr>
+ <tr>
+ <td>F12 (code 123)</td>
+ <td>A hot key code for the 'give exclusive audio' functionality.</td>
+ <td>Yes</td>
+ <td>exclusive.audio.keycode</td>
+ </tr>
+ <tr>
+ <td>F8 (code 119)</td>
+ <td>If 1 or 2 video windows are present in the room they will be
+ "rearranged" to take all the place available</td>
+ <td>No</td>
+ <td>
+ </td>
+ </tr>
+ <tr>
+ <td>F7 (code 118)</td>
+ <td>A hot key code for the 'mute/unmute audio' functionality.</td>
+ <td>Yes</td>
+ <td>mute.keycode</td>
+ </tr>
+ </table>
+ </section>
+ </body>
</document>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/IBMDB2Config.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/IBMDB2Config.xml b/openmeetings-server/src/site/xdoc/IBMDB2Config.xml
index d8b316a..49f81f8 100644
--- a/openmeetings-server/src/site/xdoc/IBMDB2Config.xml
+++ b/openmeetings-server/src/site/xdoc/IBMDB2Config.xml
@@ -1,73 +1,73 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>IBM DB2 Configuration</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="IBM DB2 Configuration">
-
- <subsection name="Before you start">
- <i>Tested with IBM DB2 Express-C 9.7.x</i>
- <ul>
- <li>
- Get the IBM Data Server Driver for JDBC and SQLJ from IBM website:
- <a
- href="https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swg-idsdjs">https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swg-idsdjs
- </a>
- </li>
- <li>Copy JDBC driver db2jcc4.jar to
- webapps/openmeetings/WEB-INF/lib/
- </li>
- <li>
- Create database for OpenMeetings using a pagesize bigger or equal
- 8K, sample query:
- <br />
- <source><![CDATA[CREATE DATABASE openmeet AUTOMATIC STORAGE YES ON 'C:' DBPATH ON 'C:' USING CODESET UTF-8 TERRITORY DE COLLATE USING System PAGESIZE 16 K]]></source>
- </li>
- <li>If you encounter issues, you can drop the db and then run
- the web based installer again </li>
- </ul>
- </subsection>
-
- <subsection name="Steps todo">
- <ul>
- <li>
- Run red5-service and goto the web-based installer:
- http://localhost:5080/openmeetings/install
- </li>
- </ul>
- </subsection>
-
- <subsection name="DB2 Sample Configuration">
- <p>
- There is a sample configuration for IBM DB2 that ships with
- every
- release in:
- <br />
- /webapps/openmeetings/WEB-INF/classes/META-INF/db2_persistence.xml
- </p>
- </subsection>
-
-
- </section>
-
- </body>
-
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>IBM DB2 Configuration</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="IBM DB2 Configuration">
+
+ <subsection name="Before you start">
+ <i>Tested with IBM DB2 Express-C 9.7.x</i>
+ <ul>
+ <li>
+ Get the IBM Data Server Driver for JDBC and SQLJ from IBM website:
+ <a
+ href="https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swg-idsdjs">https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swg-idsdjs
+ </a>
+ </li>
+ <li>Copy JDBC driver db2jcc4.jar to
+ webapps/openmeetings/WEB-INF/lib/
+ </li>
+ <li>
+ Create database for OpenMeetings using a pagesize bigger or equal
+ 8K, sample query:
+ <br />
+ <source><![CDATA[CREATE DATABASE openmeet AUTOMATIC STORAGE YES ON 'C:' DBPATH ON 'C:' USING CODESET UTF-8 TERRITORY DE COLLATE USING System PAGESIZE 16 K]]></source>
+ </li>
+ <li>If you encounter issues, you can drop the db and then run
+ the web based installer again </li>
+ </ul>
+ </subsection>
+
+ <subsection name="Steps todo">
+ <ul>
+ <li>
+ Run red5-service and goto the web-based installer:
+ http://localhost:5080/openmeetings/install
+ </li>
+ </ul>
+ </subsection>
+
+ <subsection name="DB2 Sample Configuration">
+ <p>
+ There is a sample configuration for IBM DB2 that ships with
+ every
+ release in:
+ <br />
+ /webapps/openmeetings/WEB-INF/classes/META-INF/db2_persistence.xml
+ </p>
+ </subsection>
+
+
+ </section>
+
+ </body>
+
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/Internationalisation.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/Internationalisation.xml b/openmeetings-server/src/site/xdoc/Internationalisation.xml
index 020c1a4..3074967 100644
--- a/openmeetings-server/src/site/xdoc/Internationalisation.xml
+++ b/openmeetings-server/src/site/xdoc/Internationalisation.xml
@@ -1,48 +1,48 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Internationalisation</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
- <body>
- <section name="Where to find language files">
- <p>You can find all current language files here: </p>
- <p>
- <a
- href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=tree;f=openmeetings-web/src/main/java/org/apache/openmeetings/web/app;hb=HEAD"
- rel="nofollow">https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=tree;f=openmeetings-web/src/main/java/org/apache/openmeetings/web/app;hb=HEAD
- </a>
- </p>
- <p>Just take one file and translate it to your language. </p>
- </section>
- <section name="Import and export of Language Files">
- <ul>
- <li>
- Use the
- <a href="LanguageEditor.html">LanguageEditor</a>
- for translation
- </li>
- <li>
- with the
- <a href="LanguageEditor.html">LanguageEditor</a>
- you can import and export Language Files
- </li>
- </ul>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Internationalisation</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+ <body>
+ <section name="Where to find language files">
+ <p>You can find all current language files here: </p>
+ <p>
+ <a
+ href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=tree;f=openmeetings-web/src/main/java/org/apache/openmeetings/web/app;hb=HEAD"
+ rel="nofollow">https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=tree;f=openmeetings-web/src/main/java/org/apache/openmeetings/web/app;hb=HEAD
+ </a>
+ </p>
+ <p>Just take one file and translate it to your language. </p>
+ </section>
+ <section name="Import and export of Language Files">
+ <ul>
+ <li>
+ Use the
+ <a href="LanguageEditor.html">LanguageEditor</a>
+ for translation
+ </li>
+ <li>
+ with the
+ <a href="LanguageEditor.html">LanguageEditor</a>
+ you can import and export Language Files
+ </li>
+ </ul>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/JUnitTesting.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/JUnitTesting.xml b/openmeetings-server/src/site/xdoc/JUnitTesting.xml
index 6c55079..24027f4 100644
--- a/openmeetings-server/src/site/xdoc/JUnitTesting.xml
+++ b/openmeetings-server/src/site/xdoc/JUnitTesting.xml
@@ -1,85 +1,85 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>JUnit Testing</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
- <section name="Introduction">
- <p>
- Automatic tests are the significant part of development process.
- Below is the instruction of how to run Openmeetings <a href="http://junit.org" rel="nofollow">JUnit</a> tests.
- </p>
- </section>
- <section name="Details">
- <ol>
- <li>running tests using command line: </li>
- <li>
- <ul>
- <li>all tests:
- <source>mvn test</source>
- </li>
- <li>subset of tests by mask:
- <source>mvn test -Dtest=TestUserService</source>
- </li>
- </ul>
- </li>
- <li>running tests from Eclipse IDE: </li>
- <li>
- <ul>
- <li>Start Eclipse </li>
- <li>Load workspace with Openmeetings project (or refresh existing project)</li>
- <li>Select "Debug Configurations..." </li>
- </ul>
- </li>
- </ol>
- <p>
- <a class="fancybox-buttons" href="images/DebugConfigurations.png">
- <img src="images/DebugConfigurations.png" alt="" width="367" height="262" />
- </a>
- </p>
- <ul>
- <li>Create New Junit configuration, give it a name and select test class</li>
- </ul>
- <p>
- <a class="fancybox-buttons" href="images/NewConfiguration.png">
- <img src="images/NewConfiguration.png" alt="" width="420" height="206" />
- </a>
- </p>
- <ul>
- <li>Select Arguments tab </li>
- <li>Add the following code to the VM section
- <source>-javaagent:/home/solomax/.m2/repository/org/apache/openjpa/openjpa/2.4.1/openjpa-2.4.1.jar -Dom.home=${workspace_loc:openmeetings-web}/src/main/webapp/ -Dbackups.dir=${workspace_loc:openmeetings-web}/target/test-data</source>
- </li>
- <li>To avoid temporary files being created in OM root, modify
- "Working Directory" as follows
- <source>${workspace_loc:openmeetings-web/target}</source>
- </li>
- </ul>
- <p>
- <a class="fancybox-buttons" href="images/Arguments.png">
- <img src="images/Arguments.png" alt="" width="435" height="410" />
- </a>
- </p>
- <ul>
- <li>Select Debug </li>
- </ul>
- </section>
- </body>
-</document>
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>JUnit Testing</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+ <section name="Introduction">
+ <p>
+ Automatic tests are the significant part of development process.
+ Below is the instruction of how to run Openmeetings <a href="http://junit.org" rel="nofollow">JUnit</a> tests.
+ </p>
+ </section>
+ <section name="Details">
+ <ol>
+ <li>running tests using command line: </li>
+ <li>
+ <ul>
+ <li>all tests:
+ <source>mvn test</source>
+ </li>
+ <li>subset of tests by mask:
+ <source>mvn test -Dtest=TestUserService</source>
+ </li>
+ </ul>
+ </li>
+ <li>running tests from Eclipse IDE: </li>
+ <li>
+ <ul>
+ <li>Start Eclipse </li>
+ <li>Load workspace with Openmeetings project (or refresh existing project)</li>
+ <li>Select "Debug Configurations..." </li>
+ </ul>
+ </li>
+ </ol>
+ <p>
+ <a class="fancybox-buttons" href="images/DebugConfigurations.png">
+ <img src="images/DebugConfigurations.png" alt="" width="367" height="262" />
+ </a>
+ </p>
+ <ul>
+ <li>Create New Junit configuration, give it a name and select test class</li>
+ </ul>
+ <p>
+ <a class="fancybox-buttons" href="images/NewConfiguration.png">
+ <img src="images/NewConfiguration.png" alt="" width="420" height="206" />
+ </a>
+ </p>
+ <ul>
+ <li>Select Arguments tab </li>
+ <li>Add the following code to the VM section
+ <source>-javaagent:/home/solomax/.m2/repository/org/apache/openjpa/openjpa/2.4.1/openjpa-2.4.1.jar -Dom.home=${workspace_loc:openmeetings-web}/src/main/webapp/ -Dbackups.dir=${workspace_loc:openmeetings-web}/target/test-data</source>
+ </li>
+ <li>To avoid temporary files being created in OM root, modify
+ "Working Directory" as follows
+ <source>${workspace_loc:openmeetings-web/target}</source>
+ </li>
+ </ul>
+ <p>
+ <a class="fancybox-buttons" href="images/Arguments.png">
+ <img src="images/Arguments.png" alt="" width="435" height="410" />
+ </a>
+ </p>
+ <ul>
+ <li>Select Debug </li>
+ </ul>
+ </section>
+ </body>
+</document>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-server/src/site/xdoc/JVMPerformanceTuning.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/JVMPerformanceTuning.xml b/openmeetings-server/src/site/xdoc/JVMPerformanceTuning.xml
index fabc06e..2e36b81 100644
--- a/openmeetings-server/src/site/xdoc/JVMPerformanceTuning.xml
+++ b/openmeetings-server/src/site/xdoc/JVMPerformanceTuning.xml
@@ -1,67 +1,67 @@
-<?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="http://maven.apache.org/XDOC/2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
- <properties>
- <title>Performance Tuning</title>
- <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
- </properties>
-
- <body>
-
- <section name="Performance Tuning">
-
- <p>To use the optimum of performance from your server there is a
- start-script for red5 available that does some basic settings in the
- JVM. It is called red5-highperf.sh. It is recommended to use that
- script for production and high-load scenarios.
- </p>
- <source>
-<![CDATA[
-#!/bin/bash
-
-if [ -z "$RED5_HOME" ]; then export RED5_HOME=.; fi
-
-# Previous option set
-export JAVA_OPTS="-Xrs -Xms512M -Xmx1024M -Xss128K -XX:NewSize=256m \
- -XX:SurvivorRatio=16 -XX:MinHeapFreeRatio=20 -XX:+ExplicitGCInvokesConcurrent \
- -Djava.net.preferIPv4Stack=true -Xverify:none"
-
-# start Red5
-echo "Setting Hi Performance Options"
-exec $RED5_HOME/red5.sh >> $RED5_HOME/log/jvm.stdout 2>&1 &
-]]>
- </source>
-
- <p>You have to exclude the "-XX:+UseConcMarkSweepGC" param from the
- default red5-highperf.sh to make it functional! However if you are a
- performance expert you might also play with the values to find
- perfect matches for your use-case.
- </p>
- <p>
- For a complete overview about possible arguments and their meaning
- see:
- <a
- href="http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#PerformanceTuning"
- rel="nofollow">http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#PerformanceTuning
- </a>
- </p>
-
- </section>
-
- </body>
-
+<?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="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+ <properties>
+ <title>Performance Tuning</title>
+ <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+ </properties>
+
+ <body>
+
+ <section name="Performance Tuning">
+
+ <p>To use the optimum of performance from your server there is a
+ start-script for red5 available that does some basic settings in the
+ JVM. It is called red5-highperf.sh. It is recommended to use that
+ script for production and high-load scenarios.
+ </p>
+ <source>
+<![CDATA[
+#!/bin/bash
+
+if [ -z "$RED5_HOME" ]; then export RED5_HOME=.; fi
+
+# Previous option set
+export JAVA_OPTS="-Xrs -Xms512M -Xmx1024M -Xss128K -XX:NewSize=256m \
+ -XX:SurvivorRatio=16 -XX:MinHeapFreeRatio=20 -XX:+ExplicitGCInvokesConcurrent \
+ -Djava.net.preferIPv4Stack=true -Xverify:none"
+
+# start Red5
+echo "Setting Hi Performance Options"
+exec $RED5_HOME/red5.sh >> $RED5_HOME/log/jvm.stdout 2>&1 &
+]]>
+ </source>
+
+ <p>You have to exclude the "-XX:+UseConcMarkSweepGC" param from the
+ default red5-highperf.sh to make it functional! However if you are a
+ performance expert you might also play with the values to find
+ perfect matches for your use-case.
+ </p>
+ <p>
+ For a complete overview about possible arguments and their meaning
+ see:
+ <a
+ href="http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#PerformanceTuning"
+ rel="nofollow">http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#PerformanceTuning
+ </a>
+ </p>
+
+ </section>
+
+ </body>
+
</document>
\ No newline at end of file
[09/26] openmeetings git commit: Normalize all the line endings
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
index 4284b86..c9a1d9b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
@@ -1,159 +1,159 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.groups;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.user.GroupUserDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
-import org.apache.openmeetings.web.common.PagedEntityListPanel;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.markup.repeater.Item;
-
-public class GroupUsersPanel extends Panel {
- private static final long serialVersionUID = 1L;
- private long groupId;
- private List<GroupUser> users2add = new ArrayList<>();
-
- public GroupUsersPanel(String id, long groupId) {
- super(id);
- this.groupId = groupId;
- setOutputMarkupId(true);
-
- SearchableDataView<GroupUser> dataView = new SearchableDataView<GroupUser>("userList", new GroupUserDataProvider()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(Item<GroupUser> item) {
- final GroupUser grpUser = item.getModelObject();
- item.add(new CheckBox("isModerator").add(new OnChangeAjaxBehavior() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- if (grpUser.getId() != null) {
- update(grpUser);
- }
- }
- }));
- User u = grpUser.getUser();
- Label label = new Label("label", u == null ? "" : GroupForm.formatUser(u));
- if (grpUser.getId() == null) {
- label.add(AttributeModifier.append("class", "newItem"));
- }
- item.add(label);
- item.add(new ConfirmableAjaxBorder("deleteUserBtn", getString("80"), getString("833")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- form.setMultiPart(true);//need to be multipart due to parent form is multipart
- }
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- if (grpUser.getId() == null) {
- users2add.remove(grpUser);
- } else {
- UserDao uDao = getBean(UserDao.class);
- User u = uDao.get(grpUser.getUser().getId());
- u.getGroupUsers().remove(grpUser);
- uDao.update(u, WebSession.getUserId());
- }
- target.add(GroupUsersPanel.this);
- }
- });
- }
- };
- add(dataView).setOutputMarkupId(true);
- add(new PagedEntityListPanel("navigator", dataView) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- target.add(GroupUsersPanel.this);
- }
- });
- }
-
- public static void update(GroupUser grpUser) {
- UserDao uDao = getBean(UserDao.class);
- User u = uDao.get(grpUser.getUser().getId());
- int idx = u.getGroupUsers().indexOf(grpUser);
- if (idx > -1) {
- u.getGroupUsers().get(idx).setModerator(grpUser.isModerator());
- } else {
- u.getGroupUsers().add(grpUser);
- }
- uDao.update(u, WebSession.getUserId());
- }
-
- void update(long groupId) {
- this.groupId = groupId;
- users2add.clear();
- }
-
- List<GroupUser> getUsers2add() {
- return users2add;
- }
-
- private class GroupUserDataProvider extends SearchableDataProvider<GroupUser> {
- private static final long serialVersionUID = 1L;
-
- GroupUserDataProvider() {
- super(GroupUserDao.class);
- }
-
- @Override
- protected GroupUserDao getDao() {
- return (GroupUserDao)super.getDao();
- }
-
- @Override
- public long size() {
- return users2add.size() + (search == null ? getDao().count(groupId) : getDao().count(groupId, search));
- }
-
- @Override
- public java.util.Iterator<? extends GroupUser> iterator(long first, long count) {
- List<GroupUser> list = new ArrayList<>();
- list.addAll(users2add);
- list.addAll(search == null && getSort() == null
- ? getDao().get(groupId, (int)first, (int)count)
- : getDao().get(groupId, search, (int)first, (int)count, getSortStr()));
-
- return list.iterator();
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.groups;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.GroupUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.Item;
+
+public class GroupUsersPanel extends Panel {
+ private static final long serialVersionUID = 1L;
+ private long groupId;
+ private List<GroupUser> users2add = new ArrayList<>();
+
+ public GroupUsersPanel(String id, long groupId) {
+ super(id);
+ this.groupId = groupId;
+ setOutputMarkupId(true);
+
+ SearchableDataView<GroupUser> dataView = new SearchableDataView<GroupUser>("userList", new GroupUserDataProvider()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(Item<GroupUser> item) {
+ final GroupUser grpUser = item.getModelObject();
+ item.add(new CheckBox("isModerator").add(new OnChangeAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ if (grpUser.getId() != null) {
+ update(grpUser);
+ }
+ }
+ }));
+ User u = grpUser.getUser();
+ Label label = new Label("label", u == null ? "" : GroupForm.formatUser(u));
+ if (grpUser.getId() == null) {
+ label.add(AttributeModifier.append("class", "newItem"));
+ }
+ item.add(label);
+ item.add(new ConfirmableAjaxBorder("deleteUserBtn", getString("80"), getString("833")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ form.setMultiPart(true);//need to be multipart due to parent form is multipart
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ if (grpUser.getId() == null) {
+ users2add.remove(grpUser);
+ } else {
+ UserDao uDao = getBean(UserDao.class);
+ User u = uDao.get(grpUser.getUser().getId());
+ u.getGroupUsers().remove(grpUser);
+ uDao.update(u, WebSession.getUserId());
+ }
+ target.add(GroupUsersPanel.this);
+ }
+ });
+ }
+ };
+ add(dataView).setOutputMarkupId(true);
+ add(new PagedEntityListPanel("navigator", dataView) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ target.add(GroupUsersPanel.this);
+ }
+ });
+ }
+
+ public static void update(GroupUser grpUser) {
+ UserDao uDao = getBean(UserDao.class);
+ User u = uDao.get(grpUser.getUser().getId());
+ int idx = u.getGroupUsers().indexOf(grpUser);
+ if (idx > -1) {
+ u.getGroupUsers().get(idx).setModerator(grpUser.isModerator());
+ } else {
+ u.getGroupUsers().add(grpUser);
+ }
+ uDao.update(u, WebSession.getUserId());
+ }
+
+ void update(long groupId) {
+ this.groupId = groupId;
+ users2add.clear();
+ }
+
+ List<GroupUser> getUsers2add() {
+ return users2add;
+ }
+
+ private class GroupUserDataProvider extends SearchableDataProvider<GroupUser> {
+ private static final long serialVersionUID = 1L;
+
+ GroupUserDataProvider() {
+ super(GroupUserDao.class);
+ }
+
+ @Override
+ protected GroupUserDao getDao() {
+ return (GroupUserDao)super.getDao();
+ }
+
+ @Override
+ public long size() {
+ return users2add.size() + (search == null ? getDao().count(groupId) : getDao().count(groupId, search));
+ }
+
+ @Override
+ public java.util.Iterator<? extends GroupUser> iterator(long first, long count) {
+ List<GroupUser> list = new ArrayList<>();
+ list.addAll(users2add);
+ list.addAll(search == null && getSort() == null
+ ? getDao().get(groupId, (int)first, (int)count)
+ : getDao().get(groupId, search, (int)first, (int)count, getSortStr()));
+
+ return list.iterator();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
index dcd492c..8fa09a3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
@@ -1,99 +1,99 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.groups;
-
-import org.apache.openmeetings.db.dao.user.GroupDao;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.web.admin.AdminPanel;
-import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.common.PagedEntityListPanel;
-import org.apache.openmeetings.web.data.DataViewContainer;
-import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableGroupAdminDataProvider;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-
-/**
- * Modify/ CRUD operations for {@link Group} and
- * {@link GroupUser}
- *
- * @author swagner
- *
- */
-@AuthorizeInstantiation({"Admin", "GroupAdmin"})
-public class GroupsPanel extends AdminPanel {
- private static final long serialVersionUID = 1L;
- private GroupForm form;
-
- public GroupsPanel(String id) {
- super(id);
- final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
-
- //Adding the Group Form
- form = new GroupForm("form", listContainer, new Group());
- add(form);
-
- //List view
- SearchableDataView<Group> dataView = new SearchableDataView<Group>("groupList", new SearchableGroupAdminDataProvider<>(GroupDao.class)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(Item<Group> item) {
- final Group g = item.getModelObject();
- item.add(new Label("id"));
- item.add(new Label("name"));
- item.add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- form.hideNewRecord();
- form.setModelObject(g);
- form.updateView(target);
- target.add(listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
- });
- item.add(AttributeModifier.append("class", getRowClass(g.getId(), form.getModelObject().getId())));
- }
- };
-
- //Paging
- add(listContainer.add(dataView).setOutputMarkupId(true));
- PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- target.add(listContainer);
- }
- };
- DataViewContainer<Group> container = new DataViewContainer<>(listContainer, dataView, navigator);
- container.addLink(new OmOrderByBorder<>("orderById", "id", container))
- .addLink(new OmOrderByBorder<>("orderByName", "name", container));
- add(container.getLinks());
- add(navigator);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.groups;
+
+import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableGroupAdminDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+/**
+ * Modify/ CRUD operations for {@link Group} and
+ * {@link GroupUser}
+ *
+ * @author swagner
+ *
+ */
+@AuthorizeInstantiation({"Admin", "GroupAdmin"})
+public class GroupsPanel extends AdminPanel {
+ private static final long serialVersionUID = 1L;
+ private GroupForm form;
+
+ public GroupsPanel(String id) {
+ super(id);
+ final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+
+ //Adding the Group Form
+ form = new GroupForm("form", listContainer, new Group());
+ add(form);
+
+ //List view
+ SearchableDataView<Group> dataView = new SearchableDataView<Group>("groupList", new SearchableGroupAdminDataProvider<>(GroupDao.class)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(Item<Group> item) {
+ final Group g = item.getModelObject();
+ item.add(new Label("id"));
+ item.add(new Label("name"));
+ item.add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ form.hideNewRecord();
+ form.setModelObject(g);
+ form.updateView(target);
+ target.add(listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+ });
+ item.add(AttributeModifier.append("class", getRowClass(g.getId(), form.getModelObject().getId())));
+ }
+ };
+
+ //Paging
+ add(listContainer.add(dataView).setOutputMarkupId(true));
+ PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ target.add(listContainer);
+ }
+ };
+ DataViewContainer<Group> container = new DataViewContainer<>(listContainer, dataView, navigator);
+ container.addLink(new OmOrderByBorder<>("orderById", "id", container))
+ .addLink(new OmOrderByBorder<>("orderByName", "name", container));
+ add(container.getLinks());
+ add(navigator);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
index 3969db9..8fb3d30 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
@@ -1,115 +1,115 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.labels;
-
-import java.util.Arrays;
-import java.util.IllformedLocaleException;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.validation.IValidatable;
-import org.apache.wicket.validation.IValidator;
-import org.apache.wicket.validation.ValidationError;
-
-import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
-
-public class AddLanguageDialog extends AbstractFormDialog<String> {
- private static final long serialVersionUID = 1L;
- private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
- private final DialogButton add = new DialogButton("add", Application.getString(366L));
- private final Form<Void> form = new Form<>("addLangForm");
- private final RequiredTextField<String> iso = new RequiredTextField<>("iso", Model.of(""));
- private final LangPanel langPanel;
-
- public AddLanguageDialog(String id, final LangPanel langPanel) {
- super(id, Application.getString(364));
- this.langPanel = langPanel;
- add(form.add(feedback, iso.setOutputMarkupId(true)));
- iso.add(new IValidator<String>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void validate(IValidatable<String> s) {
- try {
- new Locale.Builder().setLanguageTag(s.getValue());
- } catch (IllformedLocaleException e) {
- s.error(new ValidationError("Invalid code, please use ")); //FIXME TODO add proper key
- return;
- }
- Locale l = Locale.forLanguageTag(s.getValue());
- for (Map.Entry<Long, Locale> e : LabelDao.languages.entrySet()) {
- if (e.getValue().equals(l)) {
- s.error(new ValidationError("This code already added")); //FIXME TODO add proper key
- break;
- }
- }
- }
- });
- }
-
- @Override
- public Form<?> getForm() {
- return form;
- }
-
- @Override
- protected List<DialogButton> getButtons() {
- return Arrays.asList(add);
- }
-
- @Override
- public DialogButton getSubmitButton() {
- return add;
- }
-
- @Override
- protected void onOpen(IPartialPageRequestHandler handler) {
- iso.setModelObject("");
- handler.add(iso);
- super.onOpen(handler);
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- target.add(feedback);
- }
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- try {
- LabelDao.add(Locale.forLanguageTag(iso.getModelObject()));
- langPanel.getLangForm().updateLanguages(target);
- target.appendJavaScript("$('#addLanguage').dialog('close');");
- } catch (Exception e) {
- error("Failed to add, " + e.getMessage()); //FIXME TODO add proper key
- target.add(feedback);
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.labels;
+
+import java.util.Arrays;
+import java.util.IllformedLocaleException;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.ValidationError;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public class AddLanguageDialog extends AbstractFormDialog<String> {
+ private static final long serialVersionUID = 1L;
+ private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+ private final DialogButton add = new DialogButton("add", Application.getString(366L));
+ private final Form<Void> form = new Form<>("addLangForm");
+ private final RequiredTextField<String> iso = new RequiredTextField<>("iso", Model.of(""));
+ private final LangPanel langPanel;
+
+ public AddLanguageDialog(String id, final LangPanel langPanel) {
+ super(id, Application.getString(364));
+ this.langPanel = langPanel;
+ add(form.add(feedback, iso.setOutputMarkupId(true)));
+ iso.add(new IValidator<String>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void validate(IValidatable<String> s) {
+ try {
+ new Locale.Builder().setLanguageTag(s.getValue());
+ } catch (IllformedLocaleException e) {
+ s.error(new ValidationError("Invalid code, please use ")); //FIXME TODO add proper key
+ return;
+ }
+ Locale l = Locale.forLanguageTag(s.getValue());
+ for (Map.Entry<Long, Locale> e : LabelDao.languages.entrySet()) {
+ if (e.getValue().equals(l)) {
+ s.error(new ValidationError("This code already added")); //FIXME TODO add proper key
+ break;
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ public Form<?> getForm() {
+ return form;
+ }
+
+ @Override
+ protected List<DialogButton> getButtons() {
+ return Arrays.asList(add);
+ }
+
+ @Override
+ public DialogButton getSubmitButton() {
+ return add;
+ }
+
+ @Override
+ protected void onOpen(IPartialPageRequestHandler handler) {
+ iso.setModelObject("");
+ handler.add(iso);
+ super.onOpen(handler);
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ target.add(feedback);
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ try {
+ LabelDao.add(Locale.forLanguageTag(iso.getModelObject()));
+ langPanel.getLangForm().updateLanguages(target);
+ target.appendJavaScript("$('#addLanguage').dialog('close');");
+ } catch (Exception e) {
+ error("Failed to add, " + e.getMessage()); //FIXME TODO add proper key
+ target.add(feedback);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
index e61f2db..9bd555d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
@@ -1,112 +1,112 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.labels;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.db.entity.label.StringLabel;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.model.CompoundPropertyModel;
-
-
-/**
- * Add/edit/delete {@link StringLabel}
- *
- * @author solomax, swagner
- *
- */
-public class LabelsForm extends AdminBaseForm<StringLabel> {
- private static final long serialVersionUID = 1L;
- private LangPanel panel;
- private String key, value;
-
- public LabelsForm(String id, LangPanel panel, StringLabel label) {
- super(id, new CompoundPropertyModel<>(label));
- this.panel = panel;
- key = label.getKey();
- value = label.getValue();
-
- add(new RequiredTextField<String>("key"));
- add(new TextArea<String>("value"));
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> f) {
- key = null;
- value = null;
- setModelObject(new StringLabel(key, value));
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- this.setModelObject(new StringLabel(key, value));
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- try {
- getBean(LabelDao.class).update(panel.language.getValue(), getModelObject());
- } catch (Exception e) {
- error("Unexpected error while saving label:" + e.getMessage()); //TODO localize
- }
- hideNewRecord();
- target.add(panel.listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- try {
- getBean(LabelDao.class).delete(panel.language.getValue(), getModelObject());
- } catch (Exception e) {
- error("Unexpected error while deleting label:" + e.getMessage()); //TODO localize
- }
- target.add(panel.listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.labels;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.openmeetings.db.entity.label.StringLabel;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.model.CompoundPropertyModel;
+
+
+/**
+ * Add/edit/delete {@link StringLabel}
+ *
+ * @author solomax, swagner
+ *
+ */
+public class LabelsForm extends AdminBaseForm<StringLabel> {
+ private static final long serialVersionUID = 1L;
+ private LangPanel panel;
+ private String key, value;
+
+ public LabelsForm(String id, LangPanel panel, StringLabel label) {
+ super(id, new CompoundPropertyModel<>(label));
+ this.panel = panel;
+ key = label.getKey();
+ value = label.getValue();
+
+ add(new RequiredTextField<String>("key"));
+ add(new TextArea<String>("value"));
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> f) {
+ key = null;
+ value = null;
+ setModelObject(new StringLabel(key, value));
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ this.setModelObject(new StringLabel(key, value));
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ try {
+ getBean(LabelDao.class).update(panel.language.getValue(), getModelObject());
+ } catch (Exception e) {
+ error("Unexpected error while saving label:" + e.getMessage()); //TODO localize
+ }
+ hideNewRecord();
+ target.add(panel.listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ try {
+ getBean(LabelDao.class).delete(panel.language.getValue(), getModelObject());
+ } catch (Exception e) {
+ error("Unexpected error while deleting label:" + e.getMessage()); //TODO localize
+ }
+ target.add(panel.listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
index ca65d72..1bd4d3f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
@@ -1,103 +1,103 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.labels;
-
-import java.util.AbstractMap;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.ChoiceRenderer;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.util.time.Duration;
-
-/**
- * Modify the language selection, add/delete language
- *
- * @author solomax, swagner
- *
- */
-public class LangForm extends Form<Void> {
- private static final long serialVersionUID = 1L;
- private DropDownChoice<Map.Entry<Long, Locale>> languages;
-
- static List<Map.Entry<Long, Locale>> getLanguages() {
- List<Map.Entry<Long, Locale>> list = new ArrayList<>();
- for (Map.Entry<Long, Locale> e : LabelDao.languages.entrySet()) {
- list.add(new AbstractMap.SimpleEntry<>(e.getKey(), e.getValue()));
- }
- return list;
- }
-
- public void updateLanguages(AjaxRequestTarget target) {
- languages.setChoices(getLanguages());
- target.add(languages);
- }
-
- /**
- * Render Main
- *
- * @param id
- * @param listContainer
- * @param language
- * @param langPanel
- */
- public LangForm(String id, final WebMarkupContainer listContainer, final LangPanel langPanel) {
- super(id);
- setOutputMarkupId(true);
-
- languages = new DropDownChoice<>("language"
- , new PropertyModel<Map.Entry<Long, Locale>>(langPanel, "language")
- , getLanguages()
- , new ChoiceRenderer<Map.Entry<Long, Locale>>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public Object getDisplayValue(Map.Entry<Long, Locale> object) {
- return object.getValue().getDisplayName();
- }
-
- @Override
- public String getIdValue(Map.Entry<Long, Locale> object, int index) {
- return "" + object.getKey();
- }
- });
-
- languages.add(new OnChangeAjaxBehavior() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- target.add(listContainer);
- }
- });
- add(languages);
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.labels;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.util.time.Duration;
+
+/**
+ * Modify the language selection, add/delete language
+ *
+ * @author solomax, swagner
+ *
+ */
+public class LangForm extends Form<Void> {
+ private static final long serialVersionUID = 1L;
+ private DropDownChoice<Map.Entry<Long, Locale>> languages;
+
+ static List<Map.Entry<Long, Locale>> getLanguages() {
+ List<Map.Entry<Long, Locale>> list = new ArrayList<>();
+ for (Map.Entry<Long, Locale> e : LabelDao.languages.entrySet()) {
+ list.add(new AbstractMap.SimpleEntry<>(e.getKey(), e.getValue()));
+ }
+ return list;
+ }
+
+ public void updateLanguages(AjaxRequestTarget target) {
+ languages.setChoices(getLanguages());
+ target.add(languages);
+ }
+
+ /**
+ * Render Main
+ *
+ * @param id
+ * @param listContainer
+ * @param language
+ * @param langPanel
+ */
+ public LangForm(String id, final WebMarkupContainer listContainer, final LangPanel langPanel) {
+ super(id);
+ setOutputMarkupId(true);
+
+ languages = new DropDownChoice<>("language"
+ , new PropertyModel<Map.Entry<Long, Locale>>(langPanel, "language")
+ , getLanguages()
+ , new ChoiceRenderer<Map.Entry<Long, Locale>>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Object getDisplayValue(Map.Entry<Long, Locale> object) {
+ return object.getValue().getDisplayName();
+ }
+
+ @Override
+ public String getIdValue(Map.Entry<Long, Locale> object, int index) {
+ return "" + object.getKey();
+ }
+ });
+
+ languages.add(new OnChangeAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ target.add(listContainer);
+ }
+ });
+ add(languages);
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
index b4cca0a..c6a189f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
@@ -1,130 +1,130 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.ldaps;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
-
-import org.apache.openmeetings.db.dao.server.LdapConfigDao;
-import org.apache.openmeetings.db.entity.server.LdapConfig;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.time.Duration;
-
-/**
- * Form components to insert/update/delete {@link LdapConfig}
- *
- * @author swagner
- *
- */
-public class LdapForm extends AdminBaseForm<LdapConfig> {
- private static final long serialVersionUID = 1L;
- private final WebMarkupContainer listContainer;
-
- public LdapForm(String id, WebMarkupContainer listContainer, final LdapConfig ldapConfig) {
- super(id, new CompoundPropertyModel<>(ldapConfig));
- setOutputMarkupId(true);
- this.listContainer = listContainer;
-
- add(new RequiredTextField<String>("name").setLabel(Model.of(Application.getString(1108))));
- add(new CheckBox("active"));
- add(forDatePattern("inserted", WEB_DATE_PATTERN));
- add(new Label("insertedby.login"));
- add(forDatePattern("updated", WEB_DATE_PATTERN));
- add(new Label("updatedby.login"));
- add(new RequiredTextField<String>("configFileName").setLabel(Model.of(Application.getString(1115))));
- add(new CheckBox("addDomainToUserName"));
- add(new TextField<String>("domain"));
- add(new TextArea<String>("comment"));
-
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- setModelObject(getBean(LdapConfigDao.class).update(getModelObject(), WebSession.getUserId()));
- hideNewRecord();
- target.add(this, listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
- this.setModelObject(new LdapConfig());
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- LdapConfig ldapConfig = this.getModelObject();
- if (ldapConfig.getId() != null) {
- ldapConfig = getBean(LdapConfigDao.class).get(ldapConfig.getId());
- } else {
- ldapConfig = new LdapConfig();
- }
- this.setModelObject(ldapConfig);
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- getBean(LdapConfigDao.class).delete(getModelObject(), WebSession.getUserId());
- this.setModelObject(new LdapConfig());
- target.add(listContainer);
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.ldaps;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+
+/**
+ * Form components to insert/update/delete {@link LdapConfig}
+ *
+ * @author swagner
+ *
+ */
+public class LdapForm extends AdminBaseForm<LdapConfig> {
+ private static final long serialVersionUID = 1L;
+ private final WebMarkupContainer listContainer;
+
+ public LdapForm(String id, WebMarkupContainer listContainer, final LdapConfig ldapConfig) {
+ super(id, new CompoundPropertyModel<>(ldapConfig));
+ setOutputMarkupId(true);
+ this.listContainer = listContainer;
+
+ add(new RequiredTextField<String>("name").setLabel(Model.of(Application.getString(1108))));
+ add(new CheckBox("active"));
+ add(forDatePattern("inserted", WEB_DATE_PATTERN));
+ add(new Label("insertedby.login"));
+ add(forDatePattern("updated", WEB_DATE_PATTERN));
+ add(new Label("updatedby.login"));
+ add(new RequiredTextField<String>("configFileName").setLabel(Model.of(Application.getString(1115))));
+ add(new CheckBox("addDomainToUserName"));
+ add(new TextField<String>("domain"));
+ add(new TextArea<String>("comment"));
+
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ setModelObject(getBean(LdapConfigDao.class).update(getModelObject(), WebSession.getUserId()));
+ hideNewRecord();
+ target.add(this, listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+ this.setModelObject(new LdapConfig());
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ LdapConfig ldapConfig = this.getModelObject();
+ if (ldapConfig.getId() != null) {
+ ldapConfig = getBean(LdapConfigDao.class).get(ldapConfig.getId());
+ } else {
+ ldapConfig = new LdapConfig();
+ }
+ this.setModelObject(ldapConfig);
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ getBean(LdapConfigDao.class).delete(getModelObject(), WebSession.getUserId());
+ this.setModelObject(new LdapConfig());
+ target.add(listContainer);
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
index 4d51408..a6b1c12 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
@@ -1,93 +1,93 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.openmeetings.web.admin.ldaps;
-
-import org.apache.openmeetings.db.dao.server.LdapConfigDao;
-import org.apache.openmeetings.db.entity.server.LdapConfig;
-import org.apache.openmeetings.web.admin.AdminPanel;
-import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.common.PagedEntityListPanel;
-import org.apache.openmeetings.web.data.DataViewContainer;
-import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-
-/**
- * {@link AdminPanel} to list and modify {@link LdapConfig}
- *
- * @author swagner
- *
- */
-public class LdapsPanel extends AdminPanel {
- private static final long serialVersionUID = 1L;
- final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
- private LdapForm form;
-
- public LdapsPanel(String id) {
- super(id);
- SearchableDataView<LdapConfig> dataView = new SearchableDataView<LdapConfig>("ldapList"
- , new SearchableDataProvider<>(LdapConfigDao.class)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final Item<LdapConfig> item) {
- final LdapConfig lc = item.getModelObject();
- item.add(new Label("id"));
- item.add(new Label("name"));
- item.add(new Label("configFileName"));
- item.add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- form.setModelObject(lc);
- form.hideNewRecord();
- target.add(form, listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
- });
- item.add(AttributeModifier.replace("class", getRowClass(lc.getId(), form.getModelObject().getId())));
- }
- };
- add(listContainer.add(dataView).setOutputMarkupId(true));
- PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- target.add(listContainer);
- }
- };
- DataViewContainer<LdapConfig> container = new DataViewContainer<>(listContainer, dataView, navigator);
- container.addLink(new OmOrderByBorder<>("orderById", "id", container))
- .addLink(new OmOrderByBorder<>("orderByName", "name", container))
- .addLink(new OmOrderByBorder<>("orderByFile", "configFileName", container));
- add(container.getLinks());
- add(navigator);
-
- form = new LdapForm("form", listContainer, new LdapConfig());
- form.showNewRecord();
- add(form);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.openmeetings.web.admin.ldaps;
+
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+/**
+ * {@link AdminPanel} to list and modify {@link LdapConfig}
+ *
+ * @author swagner
+ *
+ */
+public class LdapsPanel extends AdminPanel {
+ private static final long serialVersionUID = 1L;
+ final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+ private LdapForm form;
+
+ public LdapsPanel(String id) {
+ super(id);
+ SearchableDataView<LdapConfig> dataView = new SearchableDataView<LdapConfig>("ldapList"
+ , new SearchableDataProvider<>(LdapConfigDao.class)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final Item<LdapConfig> item) {
+ final LdapConfig lc = item.getModelObject();
+ item.add(new Label("id"));
+ item.add(new Label("name"));
+ item.add(new Label("configFileName"));
+ item.add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ form.setModelObject(lc);
+ form.hideNewRecord();
+ target.add(form, listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+ });
+ item.add(AttributeModifier.replace("class", getRowClass(lc.getId(), form.getModelObject().getId())));
+ }
+ };
+ add(listContainer.add(dataView).setOutputMarkupId(true));
+ PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ target.add(listContainer);
+ }
+ };
+ DataViewContainer<LdapConfig> container = new DataViewContainer<>(listContainer, dataView, navigator);
+ container.addLink(new OmOrderByBorder<>("orderById", "id", container))
+ .addLink(new OmOrderByBorder<>("orderByName", "name", container))
+ .addLink(new OmOrderByBorder<>("orderByFile", "configFileName", container));
+ add(container.getLinks());
+ add(navigator);
+
+ form = new LdapForm("form", listContainer, new LdapConfig());
+ form.showNewRecord();
+ add(form);
+ }
+}