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 2014/07/11 21:14:33 UTC

svn commit: r1609773 - in /openmeetings: branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/ branches/3.0.x/WebContent/swf10/base/remote/ branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/ branches/3.0.x/src/db/java/org/apa...

Author: solomax
Date: Fri Jul 11 19:14:32 2014
New Revision: 1609773

URL: http://svn.apache.org/r1609773
Log:
[OPENMEETINGS-1040] select2 is used to set/display user groups;
	code clean-up

Modified:
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx
    openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx
    openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
    openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
    openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java

Modified: openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx Fri Jul 11 19:14:32 2014
@@ -99,8 +99,7 @@
         <!--
            public synchronized Boolean startInterviewRecording()
          -->
-        <netRemoteCallHib name="startInterviewRecording" funcname="startInterviewRecording" 
-                          remotecontext="$once{ canvas.thishib }" >  
+        <netRemoteCallHib name="startInterviewRecording" funcname="startInterviewRecording" remotecontext="$once{ canvas.thishib }" >  
             <handler name="ondata" args="value">
                 <![CDATA[
                     if ($debug) Debug.write("startInterviewRecording: ",value);
@@ -111,8 +110,7 @@
             </handler>
         </netRemoteCallHib>          
         
-        <netRemoteCallHib name="stopInterviewRecording" funcname="stopInterviewRecording" 
-                          remotecontext="$once{ canvas.thishib }" >  
+        <netRemoteCallHib name="stopInterviewRecording" funcname="stopInterviewRecording" remotecontext="$once{ canvas.thishib }" >  
             <handler name="ondata" args="value">
                 <![CDATA[
                     if ($debug) Debug.write("stopInterviewRecording: ",value);
@@ -149,4 +147,4 @@
         
 </class>
 
-</library>
\ No newline at end of file
+</library>

Modified: openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx Fri Jul 11 19:14:32 2014
@@ -236,6 +236,7 @@
 			}
 			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;
 		}

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java Fri Jul 11 19:14:32 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.user;
 
+import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
@@ -74,6 +75,10 @@ public class OrganisationDao implements 
 		return q.getSingleResult();
 	}
 	
+	public List<Organisation> get(Collection<Long> ids) {
+		return em.createNamedQuery("getOrganisationsByIds", Organisation.class).setParameter("ids", ids).getResultList();
+	}
+
 	public Organisation update(Organisation entity, Long userId) {
 		if (entity.getOrganisation_id() == null) {
 			if (userId != null) {

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java Fri Jul 11 19:14:32 2014
@@ -121,17 +121,26 @@ public class OrganisationUserDao impleme
 			entity.setUpdatetime(new Date());
 			entity = em.merge(entity);
 		}
+		updateUser(entity, false, userId);
 		return entity;
 	}
 
-	public void delete(Organisation_Users entity, Long userId) {
-		if (entity.getOrganisation_users_id() != null) {
-			User u = usersDao.get(entity.getUser().getUser_id());
-			int idx = u.getOrganisation_users().indexOf(entity);
-			//entity has been detached need to re-fetch
+	private void updateUser(Organisation_Users entity, boolean delete, Long userId) {
+		//entity has been detached need to re-fetch
+		User u = usersDao.get(entity.getUser().getUser_id());
+		int idx = u.getOrganisation_users().indexOf(entity);
+		if (delete && idx > -1) {
 			Organisation_Users ou = u.getOrganisation_users().remove(idx);
 			em.remove(ou);
-			usersDao.update(u, userId);
+		} else if (!delete && idx < 0) {
+			u.getOrganisation_users().add(entity);
+		}
+		usersDao.update(u, userId);
+	}
+	
+	public void delete(Organisation_Users entity, Long userId) {
+		if (entity.getOrganisation_users_id() != null) {
+			updateUser(entity, true, userId);
 		}
 	}
 }

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java Fri Jul 11 19:14:32 2014
@@ -40,6 +40,8 @@ import org.simpleframework.xml.Root;
 		query="SELECT c FROM Organisation AS c WHERE c.organisation_id = :organisation_id AND c.deleted = :deleted")
 	, @NamedQuery(name="getAnyOrganisationById",
 		query="SELECT c FROM Organisation AS c WHERE c.organisation_id = :organisation_id")
+	, @NamedQuery(name="getOrganisationsByIds",
+		query="SELECT c FROM Organisation AS c WHERE c.organisation_id IN :ids")
 	, @NamedQuery(name="getOrganisationsByUserId",
 		query="SELECT ou.organisation FROM User u, IN(u.organisation_users) ou WHERE u.deleted = false AND u.user_id = :user_id")
 	, @NamedQuery(name="getNondeletedOrganisations", query="SELECT o FROM Organisation o WHERE o.deleted = false ORDER BY o.organisation_id")

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java Fri Jul 11 19:14:32 2014
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.web.admin.groups;
 
+import static org.apache.openmeetings.web.app.Application.getBean;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -25,7 +27,6 @@ import org.apache.openmeetings.db.dao.us
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ConfirmCallListener;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
@@ -64,7 +65,7 @@ public class GroupUsersPanel extends Pan
 					@Override
 					protected void onUpdate(AjaxRequestTarget target) {
 						if (orgUser.getOrganisation_users_id() != null) {
-							Application.getBean(OrganisationUserDao.class).update(orgUser, WebSession.getUserId());
+							getBean(OrganisationUserDao.class).update(orgUser, WebSession.getUserId());
 						}
 					}
 				}));
@@ -93,7 +94,7 @@ public class GroupUsersPanel extends Pan
 								}
 							}
 						} else {
-							Application.getBean(OrganisationUserDao.class).delete(orgUser, WebSession.getUserId());
+							getBean(OrganisationUserDao.class).delete(orgUser, WebSession.getUserId());
 						}
 						target.add(GroupUsersPanel.this);
 					}

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html Fri Jul 11 19:14:32 2014
@@ -68,7 +68,7 @@
 		<textarea wicket:id="adresses.comment" />
 	</div>
 	<div class="formelement">
-		<label><wicket:ommessage key="161" /></label><select wicket:id="organisation_users" style="height: 80px" />
+		<label><wicket:ommessage key="161" /></label><input type="hidden" class="input" wicket:id="organisation_users" style="height: 80px" />
 	</div>
 </wicket:panel>
 </html>
\ No newline at end of file

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java Fri Jul 11 19:14:32 2014
@@ -25,8 +25,10 @@ import static org.apache.openmeetings.we
 import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
+import org.apache.directory.api.util.Strings;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
@@ -49,7 +51,6 @@ import org.apache.wicket.markup.html.for
 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.ListMultipleChoice;
 import org.apache.wicket.markup.html.form.PasswordTextField;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.form.TextArea;
@@ -60,6 +61,10 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 
+import com.vaynberg.wicket.select2.Response;
+import com.vaynberg.wicket.select2.Select2MultiChoice;
+import com.vaynberg.wicket.select2.TextChoiceProvider;
+
 public class GeneralUserForm extends Form<User> {
 	private static final long serialVersionUID = 5360667099083510234L;
 	private Salutation salutation;
@@ -135,7 +140,7 @@ public class GeneralUserForm extends For
 				, new ChoiceRenderer<State>("name", "state_id")));
 		add(new TextArea<String>("adresses.comment"));
 
-		List<Organisation_Users> orgUsers;
+		final List<Organisation_Users> orgUsers;
 		if (isAdminForm) {
 			List<Organisation> orgList = getBean(OrganisationDao.class).get(0, Integer.MAX_VALUE);
 			orgUsers = new ArrayList<Organisation_Users>(orgList.size());
@@ -145,10 +150,41 @@ public class GeneralUserForm extends For
 		} else {
 			orgUsers = getModelObject().getOrganisation_users();
 		}
-		ListMultipleChoice<Organisation_Users> orgChoiceList = new ListMultipleChoice<Organisation_Users>(
-				"organisation_users", orgUsers,
-				new ChoiceRenderer<Organisation_Users>("organisation.name", "organisation.organisation_id"));
-		add(orgChoiceList.setEnabled(isAdminForm));
+		add(new Select2MultiChoice<Organisation_Users>("organisation_users", null, new TextChoiceProvider<Organisation_Users>() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected String getDisplayText(Organisation_Users choice) {
+				return choice.getOrganisation().getName();
+			}
+
+			@Override
+			protected Object getId(Organisation_Users choice) {
+				return choice.getOrganisation().getOrganisation_id();
+			}
+
+			@Override
+			public void query(String term, int page, Response<Organisation_Users> response) {
+				for (Organisation_Users ou : orgUsers) {
+					if (Strings.isEmpty(term) || (!Strings.isEmpty(term) && ou.getOrganisation().getName().contains(term))) {
+						response.add(ou);
+					}
+				}
+			}
+
+			@Override
+			public Collection<Organisation_Users> toChoices(Collection<String> _ids) {
+				List<Long> ids = new ArrayList<Long>();
+				for (String id : _ids) {
+					ids.add(Long.parseLong(id));
+				}
+				List<Organisation_Users> list = new ArrayList<Organisation_Users>();
+				for (Organisation o : getBean(OrganisationDao.class).get(ids)) {
+					list.add(new Organisation_Users(o));
+				}
+				return list;
+			}
+		}).setEnabled(isAdminForm));
 	}
 
 	@Override

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java Fri Jul 11 19:14:32 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.user;
 
+import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
@@ -74,6 +75,10 @@ public class OrganisationDao implements 
 		return q.getSingleResult();
 	}
 	
+	public List<Organisation> get(Collection<Long> ids) {
+		return em.createNamedQuery("getOrganisationsByIds", Organisation.class).setParameter("ids", ids).getResultList();
+	}
+
 	public Organisation update(Organisation entity, Long userId) {
 		if (entity.getId() == null) {
 			if (userId != null) {

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java Fri Jul 11 19:14:32 2014
@@ -121,17 +121,26 @@ public class OrganisationUserDao impleme
 			entity.setUpdatetime(new Date());
 			entity = em.merge(entity);
 		}
+		updateUser(entity, false, userId);
 		return entity;
 	}
 
-	public void delete(Organisation_Users entity, Long userId) {
-		if (entity.getId() != null) {
-			User u = usersDao.get(entity.getUser().getId());
-			int idx = u.getOrganisation_users().indexOf(entity);
-			//entity has been detached need to re-fetch
+	private void updateUser(Organisation_Users entity, boolean delete, Long userId) {
+		//entity has been detached need to re-fetch
+		User u = usersDao.get(entity.getUser().getId());
+		int idx = u.getOrganisation_users().indexOf(entity);
+		if (delete && idx > -1) {
 			Organisation_Users ou = u.getOrganisation_users().remove(idx);
 			em.remove(ou);
-			usersDao.update(u, userId);
+		} else if (!delete && idx < 0) {
+			u.getOrganisation_users().add(entity);
+		}
+		usersDao.update(u, userId);
+	}
+	
+	public void delete(Organisation_Users entity, Long userId) {
+		if (entity.getId() != null) {
+			updateUser(entity, true, userId);
 		}
 	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java Fri Jul 11 19:14:32 2014
@@ -571,10 +571,10 @@ public class UserDao implements IDataPro
 	/**
 	 * login logic
 	 * 
-	 * @param SID
-	 * @param Username
-	 * @param Userpass
-	 * @return
+	 * @param userOrEmail: login or email of the user being tested
+	 * @param userpass: password of the user being tested
+	 * @return User object in case of successful login
+	 * @throws OmException in case of any issue 
 	 */
 	public User login(String userOrEmail, String userpass) throws OmException {
 		List<User> users = em.createNamedQuery("getUserByLoginOrEmail", User.class)

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java Fri Jul 11 19:14:32 2014
@@ -39,6 +39,8 @@ import org.simpleframework.xml.Root;
 		query="SELECT c FROM Organisation AS c WHERE c.id = :organisation_id AND c.deleted = :deleted")
 	, @NamedQuery(name="getAnyOrganisationById",
 		query="SELECT c FROM Organisation AS c WHERE c.id = :organisation_id")
+	, @NamedQuery(name="getOrganisationsByIds",
+		query="SELECT c FROM Organisation AS c WHERE c.id IN :ids")
 	, @NamedQuery(name="getOrganisationsByUserId",
 		query="SELECT ou.organisation FROM User u, IN(u.organisation_users) ou WHERE u.deleted = false AND u.id = :user_id")
 	, @NamedQuery(name="getNondeletedOrganisations", query="SELECT o FROM Organisation o WHERE o.deleted = false ORDER BY o.id")

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java Fri Jul 11 19:14:32 2014
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.web.admin.groups;
 
+import static org.apache.openmeetings.web.app.Application.getBean;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -25,7 +27,6 @@ import org.apache.openmeetings.db.dao.us
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ConfirmCallListener;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
@@ -64,7 +65,7 @@ public class GroupUsersPanel extends Pan
 					@Override
 					protected void onUpdate(AjaxRequestTarget target) {
 						if (orgUser.getId() != null) {
-							Application.getBean(OrganisationUserDao.class).update(orgUser, WebSession.getUserId());
+							getBean(OrganisationUserDao.class).update(orgUser, WebSession.getUserId());
 						}
 					}
 				}));
@@ -93,7 +94,7 @@ public class GroupUsersPanel extends Pan
 								}
 							}
 						} else {
-							Application.getBean(OrganisationUserDao.class).delete(orgUser, WebSession.getUserId());
+							getBean(OrganisationUserDao.class).delete(orgUser, WebSession.getUserId());
 						}
 						target.add(GroupUsersPanel.this);
 					}

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html Fri Jul 11 19:14:32 2014
@@ -68,7 +68,7 @@
 		<textarea wicket:id="adresses.comment" />
 	</div>
 	<div class="formelement">
-		<label><wicket:ommessage key="161" /></label><select wicket:id="organisation_users" style="height: 80px" />
+		<label><wicket:ommessage key="161" /></label><input type="hidden" class="input" wicket:id="organisation_users" style="height: 80px" />
 	</div>
 </wicket:panel>
 </html>
\ No newline at end of file

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java Fri Jul 11 19:14:32 2014
@@ -25,8 +25,10 @@ import static org.apache.openmeetings.we
 import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
+import org.apache.directory.api.util.Strings;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
@@ -49,7 +51,6 @@ import org.apache.wicket.markup.html.for
 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.ListMultipleChoice;
 import org.apache.wicket.markup.html.form.PasswordTextField;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.form.TextArea;
@@ -60,6 +61,10 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 
+import com.vaynberg.wicket.select2.Response;
+import com.vaynberg.wicket.select2.Select2MultiChoice;
+import com.vaynberg.wicket.select2.TextChoiceProvider;
+
 public class GeneralUserForm extends Form<User> {
 	private static final long serialVersionUID = 1L;
 	private Salutation salutation;
@@ -135,7 +140,7 @@ public class GeneralUserForm extends For
 				, new ChoiceRenderer<State>("name", "state_id")));
 		add(new TextArea<String>("adresses.comment"));
 
-		List<Organisation_Users> orgUsers;
+		final List<Organisation_Users> orgUsers;
 		if (isAdminForm) {
 			List<Organisation> orgList = getBean(OrganisationDao.class).get(0, Integer.MAX_VALUE);
 			orgUsers = new ArrayList<Organisation_Users>(orgList.size());
@@ -145,10 +150,41 @@ public class GeneralUserForm extends For
 		} else {
 			orgUsers = getModelObject().getOrganisation_users();
 		}
-		ListMultipleChoice<Organisation_Users> orgChoiceList = new ListMultipleChoice<Organisation_Users>(
-				"organisation_users", orgUsers,
-				new ChoiceRenderer<Organisation_Users>("organisation.name", "organisation.id"));
-		add(orgChoiceList.setEnabled(isAdminForm));
+		add(new Select2MultiChoice<Organisation_Users>("organisation_users", null, new TextChoiceProvider<Organisation_Users>() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected String getDisplayText(Organisation_Users choice) {
+				return choice.getOrganisation().getName();
+			}
+
+			@Override
+			protected Object getId(Organisation_Users choice) {
+				return choice.getOrganisation().getId();
+			}
+
+			@Override
+			public void query(String term, int page, Response<Organisation_Users> response) {
+				for (Organisation_Users ou : orgUsers) {
+					if (Strings.isEmpty(term) || (!Strings.isEmpty(term) && ou.getOrganisation().getName().contains(term))) {
+						response.add(ou);
+					}
+				}
+			}
+
+			@Override
+			public Collection<Organisation_Users> toChoices(Collection<String> _ids) {
+				List<Long> ids = new ArrayList<Long>();
+				for (String id : _ids) {
+					ids.add(Long.parseLong(id));
+				}
+				List<Organisation_Users> list = new ArrayList<Organisation_Users>();
+				for (Organisation o : getBean(OrganisationDao.class).get(ids)) {
+					list.add(new Organisation_Users(o));
+				}
+				return list;
+			}
+		}).setEnabled(isAdminForm));
 	}
 
 	@Override