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 2013/12/29 11:18:54 UTC

svn commit: r1554011 - in /openmeetings/trunk/singlewebapp: ./ src/main/webapp/WEB-INF/classes/META-INF/ src/main/webapp/css/ src/main/webapp/css/images/ src/main/webapp/languages/ src/util/java/org/apache/openmeetings/util/ src/web/java/org/apache/ope...

Author: solomax
Date: Sun Dec 29 10:18:52 2013
New Revision: 1554011

URL: http://svn.apache.org/r1554011
Log:
[OPENMEETINGS-711, OPENMEETINGS-757] Internal and external attendees are able to be added to the both Appointment and Message.

Added:
    openmeetings/trunk/singlewebapp/src/main/webapp/css/images/user_go.png   (with props)
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserMultiChoice.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/user-multi-choice.js
Removed:
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/MeetingMemberDialog.html
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/MeetingMemberDialog.java
Modified:
    openmeetings/trunk/singlewebapp/ivy.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/css/calendar.css
    openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/arabic.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/bulgarian.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/catalan.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese simplified.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese traditional.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/czech.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/danish.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch (studIP).xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/dutch.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/english.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/finnish.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/french.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/galician.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/greek.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/hebrew.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/hungarian.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/indonesian.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/italian.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/japanese.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/korean.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/persian.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/polish.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues brazil.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/russian.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/slovak.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/spanish.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/swedish.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/thai.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/turkish.xml
    openmeetings/trunk/singlewebapp/src/main/webapp/languages/ukrainian.xml
    openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/DaoHelper.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.html
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java

Modified: openmeetings/trunk/singlewebapp/ivy.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/ivy.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/ivy.xml (original)
+++ openmeetings/trunk/singlewebapp/ivy.xml Sun Dec 29 10:18:52 2013
@@ -291,6 +291,9 @@
 		<dependency org="org.wicketstuff" name="wicketstuff-html5" rev="6.12.0" conf="openmeetings->*" transitive="false">
 			<include type="jar" />
 		</dependency>
+		<dependency org="com.vaynberg.wicket.select2" name="wicket-select2" rev="2.2.2" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
 		
 		<!-- iCal4j seems to need this JAR -->
 		<dependency org="backport-util-concurrent" name="backport-util-concurrent" rev="3.1" conf="openmeetings->*"/>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml Sun Dec 29 10:18:52 2013
@@ -79,7 +79,7 @@
 			<property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
 			<property name="openjpa.ConnectionProperties"
 				value="DriverClassName=com.mysql.jdbc.Driver
-					, Url=jdbc:mysql://localhost:3306/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8&amp;connectionCollation=utf8_general_ci&amp;cachePrepStmts=true&amp;cacheCallableStatements=true&amp;cacheServerConfiguration=true&amp;useLocalSessionState=true&amp;elideSetAutoCommits=true&amp;alwaysSendSetIsolation=false&amp;enableQueryTimeouts=false&amp;prepStmtCacheSize=3000&amp;prepStmtCacheSqlLimit=1000
+					, Url=jdbc:mysql://192.168.15.178:3306/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8&amp;connectionCollation=utf8_general_ci&amp;cachePrepStmts=true&amp;cacheCallableStatements=true&amp;cacheServerConfiguration=true&amp;useLocalSessionState=true&amp;elideSetAutoCommits=true&amp;alwaysSendSetIsolation=false&amp;enableQueryTimeouts=false&amp;prepStmtCacheSize=3000&amp;prepStmtCacheSqlLimit=1000
 					, MaxActive=100
 					, MaxWait=10000
 					, TestOnBorrow=true

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/css/calendar.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/css/calendar.css?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/css/calendar.css (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/css/calendar.css Sun Dec 29 10:18:52 2013
@@ -78,4 +78,7 @@
 
 .appointmentPopUp .attendeeContainer table td:nth-child(3) div {
 	width: 20px;
-}
\ No newline at end of file
+}
+.appointment.attendees {
+	width: 100%;
+}

Added: openmeetings/trunk/singlewebapp/src/main/webapp/css/images/user_go.png
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/css/images/user_go.png?rev=1554011&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openmeetings/trunk/singlewebapp/src/main/webapp/css/images/user_go.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css Sun Dec 29 10:18:52 2013
@@ -514,7 +514,7 @@ table.messages td.main {
 	width: 20px;
 	min-height: inherit;
 }
-input[type="text"].messages.text {
+input[type="text"].messages.text, .messages.text.to {
 	width: 100%;
 }
 textarea.messages.body {
@@ -557,4 +557,20 @@ tr.unread {
 .room-row {
 	background-color: rgb(248, 248, 248);
 	border-bottom: 5px solid white;
-}
\ No newline at end of file
+}
+.select2-results .select2-result .select2-result-label .user.external
+, .select2-results .select2-result .select2-result-label .user.internal
+, .select2-choices .select2-search-choice .user.external
+, .select2-choices .select2-search-choice .user.internal {
+	padding-left: 18px;
+	background-repeat: no-repeat;
+	background-position: 0px 2px;
+}
+.select2-results .select2-result .select2-result-label .user.external
+, .select2-choices .select2-search-choice .user.external {
+	background-image: url(images/user_go.png);
+}
+.select2-results .select2-result .select2-result-label .user.internal
+, .select2-choices .select2-search-choice .user.internal {
+	background-image: url(images/user.png);
+}

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/arabic.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/arabic.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/arabic.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/arabic.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/bulgarian.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/bulgarian.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/bulgarian.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/bulgarian.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/catalan.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/catalan.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/catalan.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/catalan.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese simplified.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese%20simplified.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese simplified.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese simplified.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese traditional.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese%20traditional.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese traditional.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/chinese traditional.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/czech.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/czech.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/czech.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/czech.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/danish.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/danish.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/danish.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/danish.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch (studIP).xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch%20%28studIP%29.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch (studIP).xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch (studIP).xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/deutsch.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/dutch.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/dutch.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/dutch.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/dutch.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/english.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/english.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/english.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/english.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/finnish.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/finnish.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/finnish.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/finnish.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/french.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/french.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/french.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/french.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/galician.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/galician.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/galician.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/galician.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/greek.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/greek.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/greek.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/greek.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/hebrew.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/hebrew.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/hebrew.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/hebrew.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/hungarian.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/hungarian.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/hungarian.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/hungarian.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/indonesian.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/indonesian.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/indonesian.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/indonesian.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/italian.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/italian.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/italian.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/italian.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/japanese.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/japanese.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/japanese.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/japanese.xml Sun Dec 29 10:18:52 2013
@@ -4799,4 +4799,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/korean.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/korean.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/korean.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/korean.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/persian.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/persian.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/persian.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/persian.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/polish.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/polish.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/polish.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/polish.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues brazil.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues%20brazil.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues brazil.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues brazil.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/portugues.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/russian.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/russian.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/russian.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/russian.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Uri возврата</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>Вы можете ввести адрес в формате: Имя1 Фамилия1 &lt;адрес1&gt; или "Имя2 Фамилия2" &lt;адрес2&gt; или 'Имя3 Фамилия3' &lt;адрес3&gt; или адрес</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/slovak.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/slovak.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/slovak.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/slovak.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/spanish.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/spanish.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/spanish.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/spanish.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/swedish.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/swedish.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/swedish.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/swedish.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/thai.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/thai.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/thai.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/thai.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/turkish.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/turkish.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/turkish.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/turkish.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/main/webapp/languages/ukrainian.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/languages/ukrainian.xml?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/languages/ukrainian.xml (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/languages/ukrainian.xml Sun Dec 29 10:18:52 2013
@@ -4798,4 +4798,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1587" name="oauth2">
     <value>Redirect uri</value>
   </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/DaoHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/DaoHelper.java?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/DaoHelper.java (original)
+++ openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/DaoHelper.java Sun Dec 29 10:18:52 2013
@@ -73,7 +73,7 @@ public class DaoHelper {
 	public static void getWhereClause(StringBuilder sb, String search, String alias, String... fields) {
 		if (search != null) {
 			boolean notEmpty = false;
-			String[] searchItems = search.split(" ");
+			String[] searchItems = search.replace("\'", "").replace("\"", "").split(" ");
 			for (int i = 0; i < searchItems.length; ++i) {
 				if (searchItems[i].isEmpty()) {
 					continue;

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html Sun Dec 29 10:18:52 2013
@@ -62,22 +62,7 @@
 				</tr>
 				<tr>
 					<td><wicket:ommessage key="803" /></td>
-					<td >
-					   <div class="attendeesComponentWrapper">
-							<div class="attendeeContainer">
-								<table>
-									<tbody wicket:id="attendeeContainer">		
-							    		<tr wicket:id="meetingMembers">
-											<td><div><span wicket:id="attendeeName"></span></div></td>
-											<td><div><span wicket:id="attendeeEmail"></span></div></td>
-											<td><div class="formCancelButton" wicket:id="attendeeDelete" wicket:ommessage="title:814"><input/></div></td>
-										</tr>
-									</tbody>
-								</table>
-							</div>
-							<div wicket:id="addMeetingMember" class="formNewButton" wicket:ommessage="title:812"><input/></div>
-						</div>
-					</td>
+					<td wicket:ommessage="title:1588"><input class="appointment attendees" type="hidden" wicket:id="attendees"/></td>
 				</tr>
 				<tr>
 					<td><wicket:ommessage key="569" /></td>
@@ -92,7 +77,6 @@
 				</tr>
 			</table>
 		</form>
-		<div wicket:id="addAttendees"></div>
 		<div wicket:id="confirmDelete"></div>
 	</wicket:panel>
 </html>

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java Sun Dec 29 10:18:52 2013
@@ -27,7 +27,11 @@ import static org.apache.openmeetings.we
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
+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.calendar.AppointmentReminderTypDao;
@@ -39,29 +43,27 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.RoomType;
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.WebSession;
 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.wicket.ajax.AjaxEventBehavior;
+import org.apache.openmeetings.web.util.UserMultiChoice;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
 import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.extensions.yui.calendar.DateTimeField;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
 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.PasswordTextField;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 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.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.model.IModel;
 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;
 
@@ -87,8 +89,8 @@ public class AppointmentDialog extends A
 	private DialogButton enterRoom = new DialogButton(enterRoomLbl);
 	private final CalendarPanel calendar;
 	protected final FeedbackPanel feedback;
-	final MeetingMemberDialog addAttendees;
 	final MessageDialog confirmDelete;
+	private IModel<Collection<User>> attendeesModel = new CollectionModel<User>(new ArrayList<User>());
 	
 	@Override
 	public int getWidth() {
@@ -118,8 +120,6 @@ public class AppointmentDialog extends A
 		feedback = new FeedbackPanel("feedback");
 		form = new AppointmentForm("appForm", model);
 		add(form);
-		addAttendees = new MeetingMemberDialog("addAttendees", WebSession.getString(812), model, form.get("attendeeContainer"));
-		add(addAttendees);
 		confirmDelete = new MessageDialog("confirmDelete", WebSession.getString(814), WebSession.getString(833), DialogButtons.OK_CANCEL, DialogIcon.WARN){
 			private static final long serialVersionUID = 1L;
 
@@ -173,7 +173,40 @@ public class AppointmentDialog extends A
 
 	@Override
 	protected void onSubmit(AjaxRequestTarget target) {
-		getBean(AppointmentDao.class).update(form.getModelObject(), getBaseUrl(), getUserId());
+        Appointment a = form.getModelObject();
+        final List<MeetingMember> attendees = a.getMeetingMembers() == null ? new ArrayList<MeetingMember>() : a.getMeetingMembers();
+        Set<Long> currentIds = new HashSet<Long>();
+        for (User u : attendeesModel.getObject()) {
+        	if (u.getUser_id() != null) {
+        		currentIds.add(u.getUser_id());
+        	}
+        }
+        
+        //remove users
+        for (Iterator<MeetingMember> i = attendees.iterator(); i.hasNext();) {
+        	MeetingMember m = i.next();
+        	if (!currentIds.contains(m.getUser().getUser_id())) {
+        		i.remove();
+        	}
+        }
+        Set<Long> originalIds = new HashSet<Long>();
+        for (MeetingMember m : attendees) {
+        	originalIds.add(m.getUser().getUser_id());
+        }
+        //add users
+        for (User u : attendeesModel.getObject()) {
+        	if (u.getUser_id() == null || !originalIds.contains(u.getUser_id())) {
+        		MeetingMember mm = new MeetingMember();
+        		mm.setUser(u);
+        		mm.setDeleted(false);
+        		mm.setInserted(a.getInserted());
+        		mm.setUpdated(a.getUpdated());
+        		mm.setAppointment(a);
+        		attendees.add(mm);
+        	}
+        }
+        a.setMeetingMembers(attendees);
+        getBean(AppointmentDao.class).update(a, getBaseUrl(), getUserId());
 		target.add(feedback);
 		calendar.refresh(target);
 	}
@@ -212,6 +245,12 @@ public class AppointmentDialog extends A
 					a.setEnd(end.getTime());
 				}
 			}
+			attendeesModel.setObject(new ArrayList<User>());
+			if (a.getMeetingMembers() != null) {
+				for (MeetingMember mm : a.getMeetingMembers()) {
+					attendeesModel.getObject().add(mm.getUser());
+				}
+			}
 		}
 		
 		public AppointmentForm(String id, IModel<Appointment> model) {
@@ -269,41 +308,7 @@ public class AppointmentDialog extends A
 					target.add(pwd);
 				}
 			});
-			
-			final WebMarkupContainer addMeetingMember = new WebMarkupContainer("addMeetingMember");
-			addMeetingMember.add(new AjaxEventBehavior("onclick") {
-				private static final long serialVersionUID = 7016550192188649714L;
-
-				protected void onEvent(AjaxRequestTarget target) {
-					addAttendees.open(target);
-	        	}
-	        });
-			add(addMeetingMember);
-			
-			final WebMarkupContainer attendeeContainer = new WebMarkupContainer("attendeeContainer");
-			attendeeContainer.add(new ListView<MeetingMember>("meetingMembers"){
-
-				private static final long serialVersionUID = -2609044181991754097L;
-
-				@Override
-				protected void populateItem(final ListItem<MeetingMember> item) {
-					MeetingMember mm = item.getModelObject();
-					item.add(new Label("attendeeName", mm.getUser().getFirstname() + " " + mm.getUser().getLastname()));
-					item.add(new Label("attendeeEmail", mm.getUser().getAdresses().getEmail()));
-					item.add(new WebMarkupContainer("attendeeDelete").add(new AjaxEventBehavior("onclick"){
-						private static final long serialVersionUID = 1L;
-
-						@Override
-						protected void onEvent(AjaxRequestTarget target) {
-							MeetingMember mm = item.getModelObject();
-							AppointmentForm.this.getModelObject().getMeetingMembers().remove(mm);
-							target.add(attendeeContainer);
-						}
-					})); 
-				}
-			});
-			add(attendeeContainer.setOutputMarkupId(true));
-
+			add(new UserMultiChoice("attendees", attendeesModel));
 		}
 		
 		private List<AppointmentReminderTyps> getRemindTypes() {

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java Sun Dec 29 10:18:52 2013
@@ -181,15 +181,16 @@ public class CalendarPanel extends UserP
 				target.appendJavaScript("setDatepickerDate('datepicker','" +  formatDateJava.format(start) + "');");
 				Appointment a = getDefault();
 				if (CalendarView.month == view && start.equals(end)) {
-					java.util.Calendar now = WebSession.getCalendar();
-					java.util.Calendar cal = WebSession.getCalendar();
+					java.util.Calendar now = java.util.Calendar.getInstance();
 					now.setTime(start);
+					java.util.Calendar cal = WebSession.getCalendar();
 					cal.set(java.util.Calendar.YEAR, now.get(java.util.Calendar.YEAR));
 					cal.set(java.util.Calendar.MONTH, now.get(java.util.Calendar.MONTH));
 					cal.set(java.util.Calendar.DATE, now.get(java.util.Calendar.DATE));
 					cal.set(java.util.Calendar.SECOND, 0);
 					cal.set(java.util.Calendar.MILLISECOND, 0);
 					a.setStart(cal.getTime());
+					cal.add(java.util.Calendar.HOUR_OF_DAY, 1);
 					a.setEnd(cal.getTime());
 				} else {
 					a.setStart(start);

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.html?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.html (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.html Sun Dec 29 10:18:52 2013
@@ -34,7 +34,7 @@
 			</tr>
 			<tr>
 				<td class="messages column label"><wicket:ommessage key="1210"/></td>
-				<td><input class="messages text" type="text" wicket:id="to"/></td>
+				<td wicket:ommessage="title:1588"><input class="messages text to" type="hidden" wicket:id="to"/></td>
 			</tr>
 			<tr>
 				<td class="messages column label"><wicket:ommessage key="1211"/></td>

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java Sun Dec 29 10:18:52 2013
@@ -22,7 +22,9 @@ import static org.apache.openmeetings.we
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.util.RoomTypeDropDown.getRoomTypes;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
@@ -31,11 +33,12 @@ import org.apache.openmeetings.db.dao.us
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.PrivateMessage;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.mail.MailHandler;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.util.ContactsHelper;
 import org.apache.openmeetings.web.util.RoomTypeDropDown;
-import org.apache.openmeetings.web.util.UserAutoCompleteTextField;
+import org.apache.openmeetings.web.util.UserMultiChoice;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.yui.calendar.DateTimeField;
@@ -47,6 +50,7 @@ import org.apache.wicket.markup.html.pan
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.model.util.CollectionModel;
 
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.toolbar.DefaultWysiwygToolbar;
@@ -65,6 +69,7 @@ public class MessageDialog extends Abstr
 	private final IModel<Date> modelStart = Model.of(new Date());
 	private final IModel<Date> modelEnd = Model.of(new Date());
 	private boolean isPrivate = false; 
+	private final IModel<Collection<User>> modelTo = new CollectionModel<User>(new ArrayList<User>());
 
 	@Override
 	public int getWidth() {
@@ -79,6 +84,7 @@ public class MessageDialog extends Abstr
 	public MessageDialog reset(boolean isPrivate) {
 		modelStart.setObject(new Date());
 		modelEnd.setObject(new Date()); //TODO should we add 1 hour or generalize with Calendar???
+		modelTo.setObject(new ArrayList<User>());
 		PrivateMessage p = new PrivateMessage();
 		p.setFrom(getBean(UserDao.class).get(getUserId()));
 		p.setOwner(p.getFrom());
@@ -107,7 +113,7 @@ public class MessageDialog extends Abstr
 		form = new Form<PrivateMessage>("form", getModel());
 		
 		form.add(feedback.setOutputMarkupId(true));
-		form.add(new UserAutoCompleteTextField("to").setRequired(true));
+		form.add(new UserMultiChoice("to", modelTo).setRequired(true));
 		form.add(new TextField<String>("subject"));
 		DefaultWysiwygToolbar toolbar = new DefaultWysiwygToolbar("toolbarContainer");
 		form.add(toolbar);
@@ -168,22 +174,26 @@ public class MessageDialog extends Abstr
 		} else {
 			p.setRoom(null);
 		}
-		if (p.getTo().getUser_id() == null) {
-			getBean(UserDao.class).update(p.getTo(), getUserId());
-		}
-		//to send
-		getBean(PrivateMessagesDao.class).update(p, getUserId());
-		//to inbox
-		p.setPrivateMessageId(0);
-		p.setOwner(p.getTo());
-		getBean(PrivateMessagesDao.class).update(p, getUserId());
-		if (p.getTo().getAdresses() != null) {
-			String aLinkHTML = 	isPrivate ? "<br/><br/>" + "<a href='" + ContactsHelper.getLink() + "'>"
-						+ WebSession.getString(1302) + "</a><br/>" : "";
-			
-			getBean(MailHandler.class).send(p.getTo().getAdresses().getEmail(),
-					WebSession.getString(1301) + p.getSubject(),
-					p.getMessage().replaceAll("\\<.*?>", "") + aLinkHTML);
+		for (User to : modelTo.getObject()) {
+			if (to.getUser_id() == null) {
+				getBean(UserDao.class).update(to, getUserId());
+			}
+			//to send
+			p.setPrivateMessageId(0);
+			p.setTo(to);
+			getBean(PrivateMessagesDao.class).update(p, getUserId());
+			//to inbox
+			p.setPrivateMessageId(0);
+			p.setOwner(to);
+			getBean(PrivateMessagesDao.class).update(p, getUserId());
+			if (to.getAdresses() != null) {
+				String aLinkHTML = 	isPrivate ? "<br/><br/>" + "<a href='" + ContactsHelper.getLink() + "'>"
+							+ WebSession.getString(1302) + "</a><br/>" : "";
+				
+				getBean(MailHandler.class).send(to.getAdresses().getEmail(),
+						WebSession.getString(1301) + p.getSubject(),
+						p.getMessage().replaceAll("\\<.*?>", "") + aLinkHTML);
+			}
 		}
 	}
 }

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html Sun Dec 29 10:18:52 2013
@@ -24,12 +24,12 @@
 	<table class="messages">
 		<tr>
 			<td class="side left">
-				<div class="email new" wicket:id="new" wicket:ommessage="title:1208"><wicket:ommessage key="1207"/></div>
+				<div class="email new clickable" wicket:id="new" wicket:ommessage="title:1208"><wicket:ommessage key="1207"/></div>
 				<div wicket:id="folders">
 					<div wicket:id="inbox"><wicket:ommessage key="1222"/></div>
 					<div wicket:id="sent"><wicket:ommessage key="1223"/></div>
 					<div wicket:id="trash"><wicket:ommessage key="1224"/></div>
-					<div class="email newdir" wicket:id="newdir" wicket:ommessage="title:1259"><wicket:ommessage key="1258"/></div>
+					<div class="email newdir clickable" wicket:id="newdir" wicket:ommessage="title:1259"><wicket:ommessage key="1258"/></div>
 					<div wicket:id="folder">
 						<div wicket:id="name"></div>
 						<div class="delete" wicket:id="delete" wicket:ommessage="title:1262"></div>

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java?rev=1554011&r1=1554010&r2=1554011&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java Sun Dec 29 10:18:52 2013
@@ -26,11 +26,8 @@ import java.util.Locale;
 
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.util.convert.IConverter;
-import org.apache.wicket.validation.IValidationError;
-import org.apache.wicket.validation.Validatable;
 
 import com.googlecode.wicket.jquery.core.renderer.ITextRenderer;
 import com.googlecode.wicket.jquery.ui.form.autocomplete.AutoCompleteTextField;
@@ -46,42 +43,7 @@ public class UserAutoCompleteTextField e
 			if (value != null && value.equals(UserAutoCompleteTextField.this.getModelValue()))  {
 				return UserAutoCompleteTextField.this.getModelObject();
 			} else {
-				//TODO extract to function
-				User u = null;
-				//FIXME refactor this
-				String email = null;
-				String fName = null;
-				String lName = null;
-				int idx = value.indexOf('<');
-				if (idx > -1) {
-					int idx1 = value.indexOf('>', idx);
-					if (idx1 > -1) {
-						email = value.substring(idx + 1, idx1);
-						
-						String name = value.substring(0, idx).replace("\"", "");
-						int idx2 = name.indexOf(' ');
-						if (idx2 > -1) {
-							fName = name.substring(0, idx2);
-							lName = name.substring(idx2 + 1);
-						} else {
-							fName = "";
-							lName = name;
-						}
-						 
-					}
-				} else {
-					email = value;
-				}
-				Validatable<String> valEmail = new Validatable<String>(email);
-				RfcCompliantEmailAddressValidator.getInstance().validate(valEmail);
-				if (valEmail.isValid()) {
-					u = getBean(UserDao.class).getContact(email, fName, lName, getUserId());
-				} else {
-					for (IValidationError err : valEmail.getErrors()) {
-						UserAutoCompleteTextField.this.error(err);
-					}
-				}
-				return u;
+				return UserChoiceProvider.getUser(value);
 			}
 		}
 

Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserChoiceProvider.java?rev=1554011&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserChoiceProvider.java (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserChoiceProvider.java Sun Dec 29 10:18:52 2013
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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 static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
+import org.apache.wicket.validation.Validatable;
+import org.json.JSONException;
+import org.json.JSONWriter;
+
+import com.vaynberg.wicket.select2.ChoiceProvider;
+import com.vaynberg.wicket.select2.Response;
+
+public class UserChoiceProvider extends ChoiceProvider<User> {
+	private static final long serialVersionUID = 1L;
+	private final static int PAGE_SIZE = 10;
+	private Map<String, User> newContacts = new Hashtable<String, User>();
+	
+	public static User getUser(String value) {
+		User u = null;
+		//FIXME refactor this
+		String email = null;
+		String fName = null;
+		String lName = null;
+		int idx = value.indexOf('<');
+		if (idx > -1) {
+			int idx1 = value.indexOf('>', idx);
+			if (idx1 > -1) {
+				email = value.substring(idx + 1, idx1);
+				
+				String name = value.substring(0, idx).replace("\"", "");
+				int idx2 = name.indexOf(' ');
+				if (idx2 > -1) {
+					fName = name.substring(0, idx2);
+					lName = name.substring(idx2 + 1);
+				} else {
+					fName = "";
+					lName = name;
+				}
+				 
+			}
+		} else {
+			email = value;
+		}
+		Validatable<String> valEmail = new Validatable<String>(email);
+		RfcCompliantEmailAddressValidator.getInstance().validate(valEmail);
+		if (valEmail.isValid()) {
+			u = getBean(UserDao.class).getContact(email, fName, lName, getUserId());
+		}
+		return u;
+	}
+	
+	protected String getDisplayText(User u) {
+		// TODO check RIGHTS here (email might need to be hidden)
+		return u == null ? "" : escapeHtml4(String.format("\"%s %s\" <%s>", u.getFirstname(), u.getLastname(), u.getAdresses().getEmail()));
+	}
+
+	protected Object getId(User u) {
+		String id = "" + u.getUser_id();
+		if (u.getUser_id() == null) {
+			newContacts.put(u.getLogin(), u);
+			id = u.getLogin();
+		}
+		return id;
+	}
+
+	@Override
+	public void query(String term, int page, Response<User> response) {
+		User c = getUser(term);
+		if (c != null) {
+			response.add(c);
+		}
+		UserDao dao = getBean(UserDao.class);
+		response.addAll(dao.get(term, page * PAGE_SIZE, PAGE_SIZE, null, getUserId()));
+
+		response.setHasMore(page < dao.count() % PAGE_SIZE);
+	}
+
+	@Override
+	public Collection<User> toChoices(Collection<String> ids) {
+		Collection<User> c = new ArrayList<User>();
+		for (String id : ids) {
+			if (newContacts.containsKey(id)) {
+				c.add(newContacts.get(id));
+			} else {
+				c.add(getBean(UserDao.class).get(Long.valueOf(id)));
+			}
+		}
+		return c;
+	}
+
+    public void toJson(User choice, JSONWriter writer) throws JSONException {
+    	writer
+    		.key("id").value(getId(choice))
+    		.key("text").value(getDisplayText(choice))
+    		.key("contact").value(choice.getType() == Type.contact);
+    };
+}

Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserMultiChoice.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserMultiChoice.java?rev=1554011&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserMultiChoice.java (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/UserMultiChoice.java Sun Dec 29 10:18:52 2013
@@ -0,0 +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.web.util;
+
+import java.util.Collection;
+
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+
+import com.vaynberg.wicket.select2.Select2MultiChoice;
+
+public class UserMultiChoice extends Select2MultiChoice<User> {
+	private static final long serialVersionUID = 1L;
+
+	public UserMultiChoice(String id, IModel<Collection<User>> model) {
+		super(id, model, new UserChoiceProvider());
+		getSettings().setFormatResult("formatOmUser");
+		getSettings().setFormatSelection("formatOmUser");
+		getSettings().setEscapeMarkup("escapeOmUserMarkup");
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(getClass(), "user-multi-choice.js"), "user-multi-choice")));
+	}
+}

Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/user-multi-choice.js
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/user-multi-choice.js?rev=1554011&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/user-multi-choice.js (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/util/user-multi-choice.js Sun Dec 29 10:18:52 2013
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+function formatOmUser(user) {
+	return "<span class='user " + (user.contact ? "external" : "internal") + "' >" + user.text + "</span>";
+}
+
+function escapeOmUserMarkup(m) {
+	return m;
+}
\ No newline at end of file