You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by vd...@apache.org on 2013/06/27 10:45:37 UTC

svn commit: r1497244 - in /openmeetings/trunk/singlewebapp: WebContent/openmeetings/css/ src/org/apache/openmeetings/web/admin/ src/org/apache/openmeetings/web/admin/groups/ src/org/apache/openmeetings/web/admin/rooms/

Author: vdegtyarev
Date: Thu Jun 27 08:45:36 2013
New Revision: 1497244

URL: http://svn.apache.org/r1497244
Log:
OPENMEETINGS-673: SIP and Moderators fields are added.

Added:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AddUsersForm.java
      - copied, changed from r1496728, openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/AddUsersForm.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AdminCommonUserForm.java
Removed:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/AddUsersForm.java
Modified:
    openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupForm.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomForm.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java

Modified: openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css?rev=1497244&r1=1497243&r2=1497244&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css (original)
+++ openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css Thu Jun 27 08:45:36 2013
@@ -125,6 +125,11 @@ table.adminListTable th {
 	color: #ffffff;
 }
 
+table.adminListTableSmall th {
+	background: #AFCBFB;
+	color: #ffffff;
+}
+
 table.adminListTable th.two_column_layout_column1 {
 	width: 136px;
 }
@@ -163,6 +168,24 @@ table.adminListTable th.three_column_lay
 	width: 244px;
 }
 
+table.adminListTableSmall th.three_column_layout_column1 {
+	width: 50px;
+}
+
+table.adminListTableSmall th.three_column_layout_column2 {
+	width: 50px;
+}
+
+table.adminListTableSmall th.three_column_layout_column3 {
+	width: 218px;
+}
+table.adminListTableSmall th.three_column_layout_column4 {
+	width: 150px;
+}
+table.adminListTableSmall th.three_column_layout_column5 {
+	width: 50px;
+}
+
 table.adminListTable td.three_column_layout_column1 {
 	width: 96px;
 }
@@ -175,6 +198,24 @@ table.adminListTable td.three_column_lay
 	width: 244px;
 }
 
+table.adminListTableSmall td.three_column_layout_column1 {
+	width: 50px;
+}
+
+table.adminListTableSmall td.three_column_layout_column2 {
+	width: 50px;
+}
+
+table.adminListTableSmall td.three_column_layout_column3 {
+	width: 218px;
+}
+table.adminListTableSmall td.three_column_layout_column4 {
+	width: 150px;
+}
+table.adminListTableSmall td.three_column_layout_column5 {
+	width: 50px;
+}
+
 table.adminListTable td div.three_column_layout_divcolumn1 {
 	word-wrap: break-word;
 	width: 96px;
@@ -190,6 +231,26 @@ table.adminListTable td div.three_column
 	width: 244px;
 }
 
+table.adminListTableSmall td div.three_column_layout_divcolumn1 {
+	width: 50px;
+}
+
+table.adminListTableSmall td div.three_column_layout_divcolumn2 {
+	width: 50px;
+}
+
+table.adminListTableSmall td div.three_column_layout_divcolumn3 {
+	width: 218px;
+}
+
+table.adminListTableSmall td div.three_column_layout_divcolumn4 {
+	width: 150px;
+}
+
+table.adminListTableSmall td div.three_column_layout_divcolumn5 {
+	width: 50px;
+}
+
 table.adminListTable th.four_column_layout_column1 {
 	width: 96px;
 }
@@ -246,10 +307,18 @@ table.adminListTable tr.even {
 	background-color: #EDF2FF;
 }
 
+table.adminListTableSmall tr.even {
+	background-color: #EDF2FF;
+}
+
 table.adminListTable tr.odd {
 	background-color: #F2FAFF;
 }
 
+table.adminListTableSmall tr.odd {
+	background-color: #F2FAFF;
+}
+
 table.adminListTable tr:hover {
 	background-color: #CCDCE8;
 }
@@ -266,6 +335,14 @@ div.tableWrapper {
 	overflow-y: scroll;
 }
 
+div.tableWrapperSmall {
+	background-color: #FFFFFF;
+	border: solid 1px #aacfe4;
+	width: 536px;
+	height: 100px;
+	overflow-y: scroll;
+}
+
 .adminPanelColumnForm {
 	display: inline-block;
 	vertical-align: top;

Copied: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AddUsersForm.java (from r1496728, openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/AddUsersForm.java)
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AddUsersForm.java?p2=openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AddUsersForm.java&p1=openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/AddUsersForm.java&r1=1496728&r2=1497244&rev=1497244&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/AddUsersForm.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AddUsersForm.java Thu Jun 27 08:45:36 2013
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.admin.groups;
+package org.apache.openmeetings.web.admin;
 
 import static org.apache.openmeetings.web.admin.groups.GroupUsersPanel.getUser;
 
@@ -24,8 +24,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.openmeetings.data.user.dao.UsersDao;
-import org.apache.openmeetings.persistence.beans.domain.Organisation;
-import org.apache.openmeetings.persistence.beans.domain.Organisation_Users;
 import org.apache.openmeetings.persistence.beans.user.User;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
@@ -41,12 +39,11 @@ import org.apache.wicket.model.PropertyM
 
 public class AddUsersForm extends Form<Void> {
 	private static final long serialVersionUID = -2458265250684437277L;
-	private Organisation organisation;
 	private String userSearchText;
 	private List<User> usersInList = new ArrayList<User>();
 	private List<User> usersToAdd = new ArrayList<User>();
 	
-	public AddUsersForm(String id, final GroupForm groupForm) {
+	public AddUsersForm(String id, final AdminCommonUserForm<?> commonForm) {
 		super(id);
 		
 		IModel<List<User>> listUsersModel = new PropertyModel<List<User>>(AddUsersForm.this, "usersInList");
@@ -81,25 +78,8 @@ public class AddUsersForm extends Form<V
 			private static final long serialVersionUID = 5553555064487161840L;
 
 			protected void onAfterSubmit(AjaxRequestTarget target, Form<?> form) {
-				UsersDao userDao = Application.getBean(UsersDao.class);
-				for (User u : usersToAdd) {
-					List<Organisation_Users> orgUsers = u.getOrganisation_users();
-					boolean found = false;
-					for (Organisation_Users ou : orgUsers) {
-						if (ou.getOrganisation().getOrganisation_id().equals(organisation.getOrganisation_id())) {
-							found = true;
-							break;
-						}
-					}
-					if (!found) {
-						Organisation_Users orgUser = new Organisation_Users(organisation);
-						orgUser.setDeleted(false);
-						orgUsers.add(orgUser);
-						userDao.update(u, WebSession.getUserId());
-					}
-				}
-				target.appendJavaScript("$('#addUsers').dialog('close');");
-				groupForm.updateView(target);
+				commonForm.submitView(target, usersToAdd);
+				commonForm.updateView(target);
 			}
 		});
 	}
@@ -109,7 +89,4 @@ public class AddUsersForm extends Form<V
 		usersInList.clear();
 	}
 	
-	public void setOrganisation(Organisation org) {
-		organisation = org;
-	}
 }

Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AdminCommonUserForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AdminCommonUserForm.java?rev=1497244&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AdminCommonUserForm.java (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/AdminCommonUserForm.java Thu Jun 27 08:45:36 2013
@@ -0,0 +1,23 @@
+package org.apache.openmeetings.web.admin;
+
+import java.util.List;
+
+import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.model.IModel;
+
+public abstract class AdminCommonUserForm<T> extends AdminBaseForm<T> {
+
+	private static final long serialVersionUID = -827309847606809118L;
+
+	@SuppressWarnings("unchecked")
+	public AdminCommonUserForm(String id, IModel<?> object) {
+		super(id, (IModel<T>) object);
+		// TODO Auto-generated constructor stub
+	}
+	
+	public abstract void updateView(AjaxRequestTarget target);
+
+	public abstract void submitView(AjaxRequestTarget target, List<User> usersToAdd);
+
+}

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupForm.java?rev=1497244&r1=1497243&r2=1497244&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupForm.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupForm.java Thu Jun 27 08:45:36 2013
@@ -21,9 +21,15 @@ package org.apache.openmeetings.web.admi
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
+import java.util.List;
+
 import org.apache.openmeetings.data.user.dao.OrganisationDao;
+import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.persistence.beans.domain.Organisation;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.persistence.beans.domain.Organisation_Users;
+import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.web.admin.AdminCommonUserForm;
+import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.OmAjaxFormValidatingBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -34,7 +40,7 @@ import org.apache.wicket.model.CompoundP
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.time.Duration;
 
-public class GroupForm extends AdminBaseForm<Organisation> {
+public class GroupForm extends AdminCommonUserForm<Organisation> {
 	private static final long serialVersionUID = -1720731686053912700L;
 	private GroupUsersPanel usersPanel;
 	private WebMarkupContainer groupList;
@@ -53,11 +59,36 @@ public class GroupForm extends AdminBase
 		OmAjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
 	}
 	
-	void updateView(AjaxRequestTarget target) {
+	@Override
+	public void updateView(AjaxRequestTarget target) {
 		usersPanel.update(getOrgId());
 		target.add(this);
 		target.appendJavaScript("groupsInit();");
 	}
+
+	@Override
+	public void submitView(AjaxRequestTarget target, List<User> usersToAdd) {
+		// TODO Auto-generated method stub
+		UsersDao userDao = Application.getBean(UsersDao.class);
+		Organisation organisation = getModelObject();
+		for (User u : usersToAdd) {
+			List<Organisation_Users> orgUsers = u.getOrganisation_users();
+			boolean found = false;
+			for (Organisation_Users ou : orgUsers) {
+				if (ou.getOrganisation().getOrganisation_id().equals(organisation.getOrganisation_id())) {
+					found = true;
+					break;
+				}
+			}
+			if (!found) {
+				Organisation_Users orgUser = new Organisation_Users(organisation);
+				orgUser.setDeleted(false);
+				orgUsers.add(orgUser);
+				userDao.update(u, WebSession.getUserId());
+			}
+		}
+		target.appendJavaScript("$('#addUsers').dialog('close');");
+	}
 	
 	private long getOrgId() {
 		return getModelObject().getOrganisation_id() != null ? getModelObject().getOrganisation_id() : 0;

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupsPanel.java?rev=1497244&r1=1497243&r2=1497244&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupsPanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/groups/GroupsPanel.java Thu Jun 27 08:45:36 2013
@@ -21,12 +21,13 @@ package org.apache.openmeetings.web.admi
 import org.apache.openmeetings.data.user.dao.OrganisationDao;
 import org.apache.openmeetings.persistence.beans.domain.Organisation;
 import org.apache.openmeetings.persistence.beans.domain.Organisation_Users;
+import org.apache.openmeetings.web.admin.AddUsersForm;
 import org.apache.openmeetings.web.admin.AdminPanel;
 import org.apache.openmeetings.web.admin.SearchableDataView;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.DataViewContainer;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
 import org.apache.openmeetings.web.data.OrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -80,11 +81,10 @@ public class GroupsPanel extends AdminPa
 					addUsersBtn.add(AttributeModifier.replace("class", "formNewButton"));
 				}
 				addUsersBtn.setEnabled(!orgEmpty);
-				addUsersForm.setOrganisation(getModelObject());
 			}
 			
 			@Override
-			void updateView(AjaxRequestTarget target) {
+			public void updateView(AjaxRequestTarget target) {
 				super.updateView(target);
 				target.add(addUsersBtn);
 			}

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1497244&r1=1497243&r2=1497244&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomForm.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomForm.java Thu Jun 27 08:45:36 2013
@@ -23,21 +23,30 @@ import static org.apache.openmeetings.we
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 import org.apache.openmeetings.data.conference.RoomManager;
 import org.apache.openmeetings.data.conference.dao.RoomDao;
+import org.apache.openmeetings.data.conference.dao.RoomModeratorsDao;
 import org.apache.openmeetings.data.user.OrganisationManager;
 import org.apache.openmeetings.persistence.beans.domain.Organisation;
 import org.apache.openmeetings.persistence.beans.room.Room;
+import org.apache.openmeetings.persistence.beans.room.RoomModerator;
 import org.apache.openmeetings.persistence.beans.room.RoomOrganisation;
 import org.apache.openmeetings.persistence.beans.room.RoomType;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.web.admin.AdminCommonUserForm;
 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.OmAjaxFormValidatingBehavior;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
@@ -47,16 +56,22 @@ import org.apache.wicket.markup.html.for
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.time.Duration;
 
-public class RoomForm extends AdminBaseForm<Room> {
+public class RoomForm extends AdminCommonUserForm<Room> {
 	private static final long serialVersionUID = 1L;
 	private final static List<Long> DROPDOWN_NUMBER_OF_PARTICIPANTS = Arrays.asList(2L, 4L, 6L, 8L, 10L, 12L, 14L, 16L, 20L, 25L, 32L, 50L,
 			100L, 150L, 200L, 500L, 1000L);
 	private final WebMarkupContainer roomList;
-
+	private final TextField<String> confno;
+	private final CheckBox sipEnabled;
+	final WebMarkupContainer moderatorContainer;
+	final ListView<RoomModerator> moderators;
+	List<RoomModerator> result = null;
 	public RoomForm(String id, WebMarkupContainer roomList, final Room room) {
 		super(id, new CompoundPropertyModel<Room>(room));
 		this.roomList = roomList;
@@ -106,6 +121,7 @@ public class RoomForm extends AdminBaseF
 		add(demoTime);
 		add(new CheckBox("allowUserQuestions"));
 		add(new CheckBox("isAudioOnly"));
+		add(new CheckBox("allowFontStyles"));
 		add(new CheckBox("isClosed"));
 		add(new TextField<String>("redirectURL"));
 		add(new CheckBox("waitForRecording"));
@@ -122,22 +138,76 @@ public class RoomForm extends AdminBaseF
 		add(new CheckBox("chatModerated"));
 		add(new CheckBox("chatOpened"));
 		add(new CheckBox("filesOpened"));
-		add(new CheckBox("autoVideoSelect"));
+		add(new CheckBox("autoVideoSelect"));	
 		
+		moderators =	new ListView<RoomModerator>("moderators", result) {
+			private static final long serialVersionUID = -7935197812421549677L;
+
+			@Override
+			protected void populateItem(final ListItem<RoomModerator> item) {
+				final RoomModerator moderator = item.getModelObject();
+				item.add(new Label("isSuperModerator", "" + moderator.getIsSuperModerator()))
+					.add(new Label("userId", "" + moderator.getUser().getUser_id()))
+					.add(new Label("uName", "" + moderator.getUser().getFirstname() + " " + moderator.getUser().getLastname()))
+					.add(new Label("email", ""+ moderator.getUser().getAdresses().getEmail()))
+					.add(new WebMarkupContainer("delete").add(new AjaxEventBehavior("onclick"){
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+						super.updateAjaxAttributes(attributes);
+						attributes.getAjaxCallListeners().add(new ConfirmCallListener(833L));
+					}
+					
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						Application.getBean(RoomModeratorsDao.class).removeRoomModeratorByUserId(moderator.getRoomModeratorsId());
+						updateModerators(target);
+					}
+				})); 
+
+				item.add(AttributeModifier.replace("class", (item.getIndex() % 2 == 1) ? "even" : "odd"));
+			}
+		};
+
 		// FIXME: Room user moderator list
+		CheckBox isModeratedRoom = new CheckBox("isModeratedRoom");
+        add(isModeratedRoom.setOutputMarkupId(true));
 
-		add(new CheckBox("isModeratedRoom"));
 		
-
+		moderatorContainer = new WebMarkupContainer("moderatorContainer");
+		
+		add(moderatorContainer.add(moderators).setOutputMarkupId(true));
+		
+		confno = new TextField<String>("confno");
+		add(confno);
+		add(new TextField<String>("pin"));
+		add(new TextField<String>("ownerId"));
+		sipEnabled = new CheckBox("sipEnabled");
+		add(sipEnabled.setOutputMarkupId(true).add(new AjaxEventBehavior("onclick") {
+			private static final long serialVersionUID = -1206667381066917517L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				sipEnabled.setModelObject(!sipEnabled.getModelObject());
+				if (sipEnabled.getModelObject() && confno.getModelObject() == null){
+					getBean(RoomDao.class).update(getModelObject(), getUserId());
+				}
+				updateView(target);				
+			}
+		}));
+		
 		// attach an ajax validation behavior to all form component's keydown
 		// event and throttle it down to once per second
 		OmAjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
 	}
 
-	private void updateView(AjaxRequestTarget target) {
-		target.add(this);
-		target.add(roomList);
-		target.appendJavaScript("omRoomPanelInit();");
+	public void updateModerators(AjaxRequestTarget target) {
+		long roomId = (getModelObject().getRooms_id() != null ? getModelObject().getRooms_id() : 0);  
+		RoomModeratorsDao moderatorsDao = getBean(RoomModeratorsDao.class);
+		final List<RoomModerator> result = moderatorsDao.getRoomModeratorByRoomId(roomId);
+		moderators.setDefaultModelObject(result);
+		target.add(moderatorContainer);
 	}
 	
 	@Override
@@ -191,4 +261,43 @@ public class RoomForm extends AdminBaseF
 	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
 		// TODO Auto-generated method stub
 	}
+
+	@Override
+	public void updateView(AjaxRequestTarget target) {
+		target.add(this);
+		target.add(roomList);
+		confno.setEnabled(sipEnabled.getModelObject());
+		target.add(confno);
+		updateModerators(target);
+		target.appendJavaScript("omRoomPanelInit();");
+	}
+
+	@Override
+	public void submitView(AjaxRequestTarget target, List<User> usersToAdd) {
+		// TODO Auto-generated method stub
+		long roomId = getModelObject().getRooms_id();
+		RoomModeratorsDao moderatorsDao = getBean(RoomModeratorsDao.class);
+		List<RoomModerator> moderators = moderatorsDao.getRoomModeratorByRoomId(roomId);
+		result = (result == null) ? new ArrayList<RoomModerator>() : result;
+		for (User u : usersToAdd) {
+			boolean found = false;
+			for ( RoomModerator rm : moderators) {
+				if (rm.getUser().getUser_id().equals(u.getUser_id())) {
+					found = true;
+					break;
+				}
+			}
+			if (!found) {
+				RoomModerator rModerator = new RoomModerator();
+				rModerator.setUser(u);
+				rModerator.setIsSuperModerator(false);
+				rModerator.setStarttime(new Date());
+				rModerator.setDeleted(false);
+				rModerator.setRoomId(roomId);
+				result.add(rModerator);
+				moderatorsDao.addRoomModeratorByUserId(u, false, roomId);
+			}
+		}
+		target.appendJavaScript("$('#addModerators').dialog('close');");
+	}
 }

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html?rev=1497244&r1=1497243&r2=1497244&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html Thu Jun 27 08:45:36 2013
@@ -22,10 +22,22 @@
 	<wicket:head>
 	   <script type="text/javascript">
            function omRoomPanelInit() {
+				$('#addModerators').dialog({
+					closeOnEscape: true
+					, autoOpen: false
+					, resizable: false
+					, width: 400
+					, modal: true
+				});
                var documentHeight = $(document).height();
                $('#adminForm').height(documentHeight-114);
                $('#adminTable').height(documentHeight-144);
            }
+			
+			function addModerators() {
+				$('#addModerators :text').val('');
+				$('#addModerators').dialog('open');
+			};
        </script>
     </wicket:head>
 	<wicket:panel>
@@ -117,10 +129,11 @@
 				            </div>
 				            <div class="formelement">
 				                <div class="info-text"><wicket:ommessage key="1077" /></div>
-                                <br/>
+				                <label><wicket:ommessage key="1531" /></label><input type="checkbox" class="formcheckbox" wicket:id="allowFontStyles" />
+				            </div>
+				            <div class="formelement">
 					            <div class="info-text"><wicket:ommessage key="1101" /></div>
-                                <br/>
-				                <label><wicket:ommessage key="1076" /></label><input type="checkbox" class="formcheckbox" wicket:id="isClosed" />
+				                <label><wicket:ommessage key="1099" /></label><input type="checkbox" class="formcheckbox" wicket:id="isClosed" />
 				            </div>
 				            <div class="formelement">
 				                <label><wicket:ommessage key="1100" /></label><input type="text" wicket:id="redirectURL" />
@@ -128,10 +141,10 @@
 							<div class="formelement">
 							    <div class="info-text"><wicket:ommessage key="1102" /></div>
                                 <br/>
-				                <label><wicket:ommessage key="1076" /></label><input type="checkbox" class="formcheckbox" wicket:id="waitForRecording" />
+				                <label><wicket:ommessage key="1355" /></label><input type="checkbox" class="formcheckbox" wicket:id="waitForRecording" />
 				            </div>
 				            <div class="formelement">
-                                <label><wicket:ommessage key="1076" /></label><input type="checkbox" class="formcheckbox" wicket:id="allowRecording" />
+                                <label><wicket:ommessage key="1356" /></label><input type="checkbox" class="formcheckbox" wicket:id="allowRecording" />
 				            </div>
 						</fieldset>
 						
@@ -174,23 +187,91 @@
                             <div class="formelement">
                                 <label><wicket:ommessage key="1526" /></label><input type="checkbox" class="formcheckbox" wicket:id="autoVideoSelect" />
 				            </div>
+						</fieldset>
+						
+						<!-- Users in this Room -->
+						<fieldset>
+						</fieldset>
+						
+						<!-- Default moderators -->
+						<fieldset>
                             <div class="formelement">
-				            <!-- 
-				            FIXME: add user moderator list
-				            <wicket:ommessage key="587" /> <select wicket:id="moderators"/>
-				            <br/>
-				             -->
-				                <div class="info-text"><wicket:ommessage key="823" /></div>
+				            	<div class="info-text"><wicket:ommessage key="823" /></div>
                                 <br/>
 				                <label><wicket:ommessage key="640" /></label><input type="checkbox" class="formcheckbox" wicket:id="isModeratedRoom" />
+                                <div wicket:id="addModerator" class="formNewButton disabled" wicket:ommessage="title:821"><input/></div>
 				            </div>
 	                        <div class="formelement">
 					            <wicket:ommessage key="816" />
 				            </div>
+							<table class="adminListTableSmall">
+								<thead>
+									<tr>
+										<th class="three_column_layout_column1"><wicket:ommessage key="817" /></th>
+										<th class="three_column_layout_column2"><wicket:ommessage key="818" /></th>
+										<th class="three_column_layout_column3"><wicket:ommessage key="819" /></th>
+										<th class="three_column_layout_column4"><wicket:ommessage key="820" /></th>
+										<th class="three_column_layout_column5"><wicket:ommessage key="827" /></th>
+									</tr>	
+								</thead>
+							</table>
+							<div class="tableWrapperSmall" id="adminTableSmall">
+								<table class="adminListTableSmall">
+									<tbody wicket:id="moderatorContainer">		
+							    		<tr wicket:id="moderators">
+											<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="isSuperModerator"></span></div></td>
+											<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="userId"></span></div></td>
+											<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="uName"></span></div></td>
+											<td class="three_column_layout_column4"><div class="three_column_layout_divcolumn4"><span wicket:id="email"></span></div></td>
+					                        <td style="width: 50px"><div style="width: 50px"><div class="formCancelButton" wicket:id="delete" wicket:ommessage="title:274"><input/></div></div></td>
+										</tr>
+									</tbody>
+								</table>
+							</div>
+						</fieldset>
+					    <!--SIP Settings -->
+						<fieldset>
+							<legend><wicket:ommessage key="1001" /></legend>
+				            <div class="formelement">
+				                <div class="info-text"><wicket:ommessage key="1002" /></div>
+                                <br/>
+                            </div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1003" /></label><input type="text" wicket:id="confno" />
+							</div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1004" /></label><input type="text" wicket:id="pin" />
+							</div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1308" /></label><input type="text" wicket:id="ownerId" />
+							</div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1538" /></label><input type="checkbox" class="formcheckbox" wicket:id="sipEnabled" />
+				            </div>
 						</fieldset>
 					</div>
 				</form>
 			</div>
 		</div>
+		<div id="addModerators" wicket:ommessage="title:821" style="display: none;">
+			<form wicket:id="addModerators">
+				<table>
+					<tr>
+						<td><wicket:ommessage key="181" /></td>
+						<td><input type="text" wicket:id="searchText" /></td>
+					</tr>
+					<tr>
+						<td style="text-align: right"><input type="button" wicket:id="search" /></td>
+					</tr>
+					<tr>
+						<td><wicket:ommessage key="183" /></td>
+						<td><select wicket:id="users" style="width: 200px; height: 300px;"></select></td>
+					</tr>
+					<tr>
+						<td colspan="2" style="text-align: right"><input type="button" wicket:id="add" /></td>
+					</tr>
+				</table>
+			</form>
+		</div>
 	</wicket:panel>
 </html>

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java?rev=1497244&r1=1497243&r2=1497244&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java Thu Jun 27 08:45:36 2013
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.admi
 
 import org.apache.openmeetings.data.conference.dao.RoomDao;
 import org.apache.openmeetings.persistence.beans.room.Room;
+import org.apache.openmeetings.web.admin.AddUsersForm;
 import org.apache.openmeetings.web.admin.AdminPanel;
 import org.apache.openmeetings.web.admin.SearchableDataView;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
@@ -36,6 +37,7 @@ import org.apache.wicket.markup.repeater
 public class RoomsPanel extends AdminPanel {
 
 	private static final long serialVersionUID = -1L;
+	private AddUsersForm addModeratorsForm;
 	private RoomForm form;
 	
 	@Override
@@ -59,8 +61,9 @@ public class RoomsPanel extends AdminPan
 					private static final long serialVersionUID = -8069413566800571061L;
 
 					protected void onEvent(AjaxRequestTarget target) {
-						form.setModelObject(room);
 						form.hideNewRecord();
+						form.setModelObject(room);
+						form.updateView(target);
 						target.add(form);
 						target.appendJavaScript("omRoomPanelInit();");
 					}
@@ -84,10 +87,42 @@ public class RoomsPanel extends AdminPan
 				target.add(listContainer);
 			}
 		});
+
+		final WebMarkupContainer addModerator = new WebMarkupContainer("addModerator");
+		addModerator.add(new AjaxEventBehavior("onclick") {
+			private static final long serialVersionUID = 1818116963707864134L;
+
+			protected void onEvent(AjaxRequestTarget target) {
+        		addModeratorsForm.clear();
+        		target.add(addModeratorsForm);
+        		target.appendJavaScript("addModerators();");
+        	}
+        });
 		
-		form = new RoomForm("form", listContainer, new Room());
-		form.showNewRecord();
-        add(form);
+		form = new RoomForm("form", listContainer, new Room()){
+			private static final long serialVersionUID = 3186201157375166657L;
+
+			@Override
+			protected void onModelChanged() {
+				super.onModelChanged();
+				boolean roomEmpty = (getModelObject() == null || getModelObject().getRooms_id() == null);
+				if (roomEmpty) {
+					addModerator.add(AttributeModifier.replace("class", "formNewButton disabled"));
+				} else {
+					addModerator.add(AttributeModifier.replace("class", "formNewButton"));
+				}
+				addModerator.setEnabled(!roomEmpty);
+			}
+			
+			/*@Override
+			public void updateView(AjaxRequestTarget target) {
+				super.updateView(target);
+				target.add(addModerator);
+			}*/
+		};
 		
+        add(form.add(addModerator.setOutputMarkupId(true)));
+        addModeratorsForm = new AddUsersForm("addModerators", form);
+		add(addModeratorsForm);
 	}
 }