You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/09/18 05:25:53 UTC

[14/18] openmeetings git commit: [OPENMEETINGS-1671] room file are saved/loaded

[OPENMEETINGS-1671] room file are saved/loaded


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/ffacf2ec
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/ffacf2ec
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/ffacf2ec

Branch: refs/heads/3.3.x
Commit: ffacf2ece0b4d23490c7954e0a07fd43876d1d9b
Parents: 6a8fef0
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Fri Sep 15 00:13:41 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Fri Sep 15 00:13:41 2017 +0700

----------------------------------------------------------------------
 .../db/entity/file/BaseFileItem.java            |   2 +-
 .../openmeetings/db/entity/room/Room.java       |  12 +-
 .../openmeetings/db/entity/room/RoomFile.java   |   8 ++
 .../openmeetings/web/admin/rooms/RoomForm.java  | 110 +++++++++++++++----
 .../web/admin/rooms/RoomsPanel.html             |  27 +++++
 5 files changed, 137 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffacf2ec/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
index c83869d..b290eaf 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
@@ -58,7 +58,7 @@ import org.simpleframework.xml.Element;
 			+ " AND f.name LIKE :name"
 			+ " ORDER BY f.name")
 	, @NamedQuery(name = "getFileItemsByIds", query = "SELECT f FROM BaseFileItem f"
-			+ " WHERE f.deleted = false AND f.id IN :ids)")
+			+ " WHERE f.deleted = false AND f.id IN :ids")
 })
 @Table(name = "file")
 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffacf2ec/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
index 84ed8e6..087a446 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
@@ -61,7 +61,7 @@ import org.simpleframework.xml.Root;
 @FetchGroups({
 	@FetchGroup(name = "roomModerators", attributes = { @FetchAttribute(name = "moderators") })
 	, @FetchGroup(name = "roomGroups", attributes = { @FetchAttribute(name = "roomGroups") })
-	, @FetchGroup(name = "roomFiles", attributes = { @FetchAttribute(name = "roomFiles") })
+	, @FetchGroup(name = "roomFiles", attributes = { @FetchAttribute(name = "files") })
 })
 @NamedQueries({
 	@NamedQuery(name = "getNondeletedRooms", query = "SELECT r FROM Room r WHERE r.deleted = false"),
@@ -305,7 +305,7 @@ public class Room implements IDataProviderEntity {
 	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
 	@JoinColumn(name = "room_id", insertable = true, updatable = true, nullable = false)
 	@ElementDependent
-	private List<RoomFile> roomFiles = new ArrayList<>();
+	private List<RoomFile> files = new ArrayList<>();
 
 	@Transient
 	private List<StreamClient> currentusers;
@@ -589,6 +589,14 @@ public class Room implements IDataProviderEntity {
 		this.pin = pin;
 	}
 
+	public List<RoomFile> getFiles() {
+		return files;
+	}
+
+	public void setFiles(List<RoomFile> files) {
+		this.files = files;
+	}
+
 	@Override
 	public String toString() {
 		return "Room [id=" + id + ", name=" + name + ", type=" + type + "]";

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffacf2ec/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
index 329697c..e8bef4f 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
@@ -55,6 +55,14 @@ public class RoomFile implements IDataProviderEntity {
 	@Column(name = "wb_idx", nullable = false)
 	private long wbIdx = 0;
 
+	public RoomFile() {}
+
+	public RoomFile(Long roomId, BaseFileItem file, long wbIdx) {
+		this.roomId = roomId;
+		this.file = file;
+		this.wbIdx = wbIdx;
+	}
+
 	@Override
 	public Long getId() {
 		return id;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffacf2ec/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index 8c9d147..f879e49 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -28,6 +28,7 @@ import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Iterator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -40,6 +41,7 @@ import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
+import org.apache.openmeetings.db.entity.room.RoomFile;
 import org.apache.openmeetings.db.entity.room.RoomGroup;
 import org.apache.openmeetings.db.entity.room.RoomModerator;
 import org.apache.openmeetings.db.entity.room.StreamClient;
@@ -80,6 +82,9 @@ import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2Choice;
 import org.wicketstuff.select2.Select2MultiChoice;
 
+import com.googlecode.wicket.jquery.ui.JQueryIcon;
+import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
+
 public class RoomForm extends AdminBaseForm<Room> {
 	private static final long serialVersionUID = 1L;
 	private final static List<Long> DROPDOWN_NUMBER_OF_PARTICIPANTS = Arrays.asList(2L, 4L, 6L, 8L, 10L, 12L, 14L, 16L, 20L, 25L, 32L, 50L,
@@ -87,6 +92,7 @@ public class RoomForm extends AdminBaseForm<Room> {
 	private final WebMarkupContainer roomList;
 	private final TextField<String> pin = new TextField<>("pin");
 	private final WebMarkupContainer moderatorContainer = new WebMarkupContainer("moderatorContainer");
+	private final WebMarkupContainer filesContainer = new WebMarkupContainer("filesContainer");
 	private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
 	private final ListView<StreamClient> clients = new ListView<StreamClient>("clients", new ArrayList<>()) {
 		private static final long serialVersionUID = 1L;
@@ -111,6 +117,7 @@ public class RoomForm extends AdminBaseForm<Room> {
 	};
 	private IModel<User> moderator2add = Model.of((User)null);
 	private IModel<Collection<BaseFileItem>> files2add = new CollectionModel<>(new ArrayList<BaseFileItem>());
+	private IModel<Long> wbIdx = Model.of(0L);
 
 	public RoomForm(String id, WebMarkupContainer roomList, final Room room) {
 		super(id, new CompoundPropertyModel<>(room));
@@ -311,30 +318,83 @@ public class RoomForm extends AdminBaseForm<Room> {
 		add(new CheckBox("moderated"));
 
 		// Files
-		add(new Select2MultiChoice<>("files2add", files2add, new ChoiceProvider<BaseFileItem>() {
-			private static final long serialVersionUID = 1L;
+		Form<Void> filesForm = new Form<>("files");
+		add(filesForm.add(new Select2MultiChoice<>("files2add", files2add, new ChoiceProvider<BaseFileItem>() {
+				private static final long serialVersionUID = 1L;
 
-			@Override
-			public String getDisplayValue(BaseFileItem f) {
-				return f.getName();
-			}
+				@Override
+				public String getDisplayValue(BaseFileItem f) {
+					return f.getName();
+				}
 
-			@Override
-			public String getIdValue(BaseFileItem f) {
-				return "" + f.getId();
-			}
+				@Override
+				public String getIdValue(BaseFileItem f) {
+					return "" + f.getId();
+				}
 
-			@Override
-			public void query(String term, int page, Response<BaseFileItem> response) {
-				response.addAll(getBean(FileItemDao.class).getAllRoomFiles(term, page * PAGE_SIZE, PAGE_SIZE, RoomForm.this.getModelObject().getId(), orgList));
-				response.setHasMore(PAGE_SIZE == response.getResults().size());
-			}
+				@Override
+				public void query(String term, int page, Response<BaseFileItem> response) {
+					response.addAll(getBean(FileItemDao.class).getAllRoomFiles(term, page * PAGE_SIZE, PAGE_SIZE, RoomForm.this.getModelObject().getId(), orgList));
+					response.setHasMore(PAGE_SIZE == response.getResults().size());
+				}
+
+				@Override
+				public Collection<BaseFileItem> toChoices(Collection<String> ids) {
+					return getBean(FileItemDao.class).get(ids);
+				}
+			}).setLabel(Model.of(getString("245"))))
+			.add(new TextField<Long>("wbidx", wbIdx) {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected String[] getInputTypes() {
+					return new String[] {"number"};
+				}
+			})
+			.add(new AjaxButton("addFiles") {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onSubmit(AjaxRequestTarget target) {
+					Room r = RoomForm.this.getModelObject();
+					for (BaseFileItem f : files2add.getObject()) {
+						r.getFiles().add(new RoomFile(r.getId(), f, wbIdx.getObject()));
+					}
+					target.add(filesContainer, filesForm);
+				}
+
+				@Override
+				protected String getIcon() {
+					return JQueryIcon.PLUSTHICK;
+				}
+			}).setOutputMarkupId(true)
+		);
+		add(filesContainer.add(new ListView<RoomFile>("files") {
+			private static final long serialVersionUID = 1L;
 
 			@Override
-			public Collection<BaseFileItem> toChoices(Collection<String> ids) {
-				return getBean(FileItemDao.class).get(ids);
+			protected void populateItem(final ListItem<RoomFile> item) {
+				final RoomFile rf = item.getModelObject();
+				item.add(new Label("name", new PropertyModel<>(rf.getFile(), "name")))
+					.add(new Label("wbIdx", new PropertyModel<>(rf, "wbIdx")))
+					.add(new ConfirmableAjaxBorder("delete", getString("80"), getString("833")) {
+						private static final long serialVersionUID = 1L;
+
+						@Override
+						protected void onSubmit(AjaxRequestTarget target) {
+							Room r = RoomForm.this.getModelObject();
+							for (Iterator<RoomFile> iter = r.getFiles().iterator(); iter.hasNext();) {
+								RoomFile _rf = iter.next();
+								if (_rf.getFile().getId().equals(rf.getFile().getId())) {
+									iter.remove();
+									break;
+								}
+							}
+							target.add(filesContainer);
+						}
+					});
 			}
-		}).setLabel(Model.of(getString("245"))));
+		}).setOutputMarkupId(true));
 
 		// Users in this Room
 		add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
@@ -373,6 +433,9 @@ public class RoomForm extends AdminBaseForm<Room> {
 			for (RoomModerator rm : r.getModerators()) {
 				rm.setRoomId(r.getId());
 			}
+			for (RoomFile rf : r.getFiles()) {
+				rf.setRoomId(r.getId());
+			}
 			// FIXME double update
 			getBean(RoomDao.class).update(getModelObject(), getUserId());
 		}
@@ -427,9 +490,16 @@ public class RoomForm extends AdminBaseForm<Room> {
 	}
 
 	public void updateView(AjaxRequestTarget target) {
+		moderator2add.setObject(null);
+		files2add.getObject().clear();
+		wbIdx.setObject(0L);
+		Room r = getModelObject();
+		if (r.getFiles() == null) {
+			r.setFiles(new ArrayList<>());
+		}
 		target.add(this);
 		target.add(roomList);
-		target.add(pin.setEnabled(getModelObject().isSipEnabled()));
+		target.add(pin.setEnabled(r.isSipEnabled()));
 		updateClients(target);
 		target.appendJavaScript("adminPanelInit();");
 	}
@@ -437,6 +507,8 @@ public class RoomForm extends AdminBaseForm<Room> {
 	@Override
 	protected void onDetach() {
 		moderator2add.detach();
+		files2add.detach();
+		wbIdx.detach();
 		super.onDetach();
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffacf2ec/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
index aec520a..2d82f4f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
@@ -143,10 +143,37 @@
 				<!-- Room files -->
 				<fieldset class="ui-widget-content">
 					<legend class="ui-widget-header"><wicket:message key="245" /></legend>
+					<form wicket:id="files">
 					<div class="formelement">
 						<label wicket:for="files2add"><wicket:message key="245" /></label>
 						<div class="om-select2"><select class="input" wicket:id="files2add"></select></div>
 					</div>
+					<div class="formelement">
+						<label wicket:for="wbidx"><wicket:message key="615" /></label>
+						<input type="number" class="input" wicket:id="wbidx"/>
+					</div>
+					<button type="button" wicket:id="addFiles"><wicket:message key="175"/></button>
+					</form>
+					<table class="adminListTable">
+						<thead>
+							<tr>
+								<th class="ui-widget-header" style="width: 380px"><wicket:message key="165" /></th>
+								<th class="ui-widget-header" style="width: 80px"><wicket:message key="615" /></th>
+								<th class="ui-widget-header" style="width: 50px"><wicket:message key="590" /></th>
+							</tr>
+						</thead>
+					</table>
+					<div class="tableWrapperSmall" id="adminTableSmall">
+						<table class="adminListTable">
+							<tbody wicket:id="filesContainer">
+								<tr wicket:id="files">
+									<td style="width: 380px"><div class="three_column_layout_divcolumn1" style="width: auto"><span wicket:id="name"></span></div></td>
+									<td style="width: 80px"><span wicket:id="wbIdx"></span></td>
+									<td style="width: 50px"><div class="formCancelButton" wicket:id="delete" wicket:message="title:604"></div></td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
 				</fieldset>
 
 				<!-- Users in this Room -->