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 -->