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 2020/08/23 10:28:03 UTC
[openmeetings] branch OPENMEETINGS-2402-reworked-upload updated
(4218027 -> 4f3bb87)
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a change to branch OPENMEETINGS-2402-reworked-upload
in repository https://gitbox.apache.org/repos/asf/openmeetings.git.
from 4218027 [OPENMEETINGS-2402] file upload is re-worked (incomplete)
add 106d7c9 [OPENMEETINGS-2412] video setup mini app should work better
add 9831094 [OPENMEETINGS-2296] libraries are updated
add e0af436 [OPENMEETINGS-2292] labels are merged
add 0bb487d no jira: link to build server is updated
add 4a5e199 release preparation: documentation update
add 84a6522 Update Javascript and Build Instructions.
add e81ccb4 Reword some typos.
add bd8f7b0 Rename to previous section heading.
add 8ebfec8 Merge pull request #105 from apache/feature/update-javascript-and-build-instructions
add e808165 [OPENMEETINGS-2296] wicket-bootstrap is downgraded
add 63c8a61 Release preparation: typos are fixed
add 77e75da no jira: weird comment is removed
add 626d982 Switching to the next development version (#106)
new 319a105 Merge branch 'master' into OPENMEETINGS-2402-reworked-upload
new 4f3bb87 [OPENMEETINGS-2402] upload seems to work
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
CHANGELOG.md | 90 +++++++++++
README.md | 43 ++++-
openmeetings-core/pom.xml | 2 +-
openmeetings-db/pom.xml | 2 +-
openmeetings-install/pom.xml | 2 +-
openmeetings-screenshare/pom.xml | 2 +-
openmeetings-server/pom.xml | 2 +-
.../src/site/xdoc/BuildInstructions.xml | 17 +-
openmeetings-server/src/site/xdoc/NewsArchive.xml | 51 ++++++
openmeetings-server/src/site/xdoc/demo.xml | 3 -
openmeetings-server/src/site/xdoc/downloads.xml | 31 ++--
openmeetings-server/src/site/xdoc/index.xml | 52 +++---
openmeetings-service/pom.xml | 2 +-
openmeetings-util/pom.xml | 2 +-
openmeetings-web/pom.xml | 4 +-
.../web/app/Application.properties.xml | 5 +-
.../web/app/Application_ar.properties.xml | 5 +-
.../web/app/Application_bg.properties.xml | 5 +-
.../web/app/Application_bn.properties.xml | 5 +-
.../web/app/Application_ca.properties.xml | 5 +-
.../web/app/Application_cs.properties.xml | 5 +-
.../web/app/Application_da.properties.xml | 5 +-
.../web/app/Application_de.properties.xml | 178 ++++++++++-----------
.../web/app/Application_el.properties.xml | 5 +-
.../web/app/Application_es.properties.xml | 9 +-
.../web/app/Application_fa.properties.xml | 5 +-
.../web/app/Application_fi.properties.xml | 5 +-
.../web/app/Application_fr.properties.xml | 5 +-
.../web/app/Application_gl.properties.xml | 5 +-
.../web/app/Application_hi.properties.xml | 117 +++++++-------
.../web/app/Application_hu.properties.xml | 5 +-
.../web/app/Application_in.properties.xml | 5 +-
.../web/app/Application_it.properties.xml | 5 +-
.../web/app/Application_iw.properties.xml | 5 +-
.../web/app/Application_ja.properties.xml | 5 +-
.../web/app/Application_ko.properties.xml | 5 +-
...roperties.xml => Application_lo.properties.xml} | 91 +++++------
.../web/app/Application_nl.properties.xml | 5 +-
.../web/app/Application_pl.properties.xml | 5 +-
.../web/app/Application_pt.properties.xml | 5 +-
.../web/app/Application_pt_BR.properties.xml | 5 +-
.../web/app/Application_ru.properties.xml | 13 +-
.../web/app/Application_sk.properties.xml | 5 +-
.../web/app/Application_sv.properties.xml | 5 +-
.../web/app/Application_ta.properties.xml | 5 +-
.../web/app/Application_th.properties.xml | 5 +-
.../web/app/Application_tr.properties.xml | 5 +-
.../web/app/Application_uk.properties.xml | 5 +-
.../web/app/Application_zh_CN.properties.xml | 5 +-
.../web/app/Application_zh_TW.properties.xml | 5 +-
.../web/common/tree/FileTreePanel.java | 6 +-
.../apache/openmeetings/web/pages/HashPage.java | 24 ++-
.../sidebar/RoomFileUploadResourceReference.java | 25 +--
.../web/room/sidebar/UploadDialog.html | 3 +
.../web/room/sidebar/UploadDialog.java | 5 +-
.../apache/openmeetings/web/room/sidebar/upload.js | 167 ++++++++++++-------
.../src/main/webapp/languages/languages.xml | 1 +
openmeetings-webservice/pom.xml | 2 +-
pom.xml | 16 +-
59 files changed, 619 insertions(+), 493 deletions(-)
copy openmeetings-web/src/main/java/org/apache/openmeetings/web/app/{Application.properties.xml => Application_lo.properties.xml} (89%)
[openmeetings] 01/02: Merge branch 'master' into
OPENMEETINGS-2402-reworked-upload
Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch OPENMEETINGS-2402-reworked-upload
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
commit 319a1057dd30eb475935a9c666965a13591ea026
Merge: 4218027 626d982
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Aug 23 13:35:05 2020 +0700
Merge branch 'master' into OPENMEETINGS-2402-reworked-upload
CHANGELOG.md | 90 +++++++++++
README.md | 43 ++++-
openmeetings-core/pom.xml | 2 +-
openmeetings-db/pom.xml | 2 +-
openmeetings-install/pom.xml | 2 +-
openmeetings-screenshare/pom.xml | 2 +-
openmeetings-server/pom.xml | 2 +-
.../src/site/xdoc/BuildInstructions.xml | 17 +-
openmeetings-server/src/site/xdoc/NewsArchive.xml | 51 ++++++
openmeetings-server/src/site/xdoc/demo.xml | 3 -
openmeetings-server/src/site/xdoc/downloads.xml | 31 ++--
openmeetings-server/src/site/xdoc/index.xml | 52 +++---
openmeetings-service/pom.xml | 2 +-
openmeetings-util/pom.xml | 2 +-
openmeetings-web/pom.xml | 4 +-
.../web/app/Application.properties.xml | 5 +-
.../web/app/Application_ar.properties.xml | 5 +-
.../web/app/Application_bg.properties.xml | 5 +-
.../web/app/Application_bn.properties.xml | 5 +-
.../web/app/Application_ca.properties.xml | 5 +-
.../web/app/Application_cs.properties.xml | 5 +-
.../web/app/Application_da.properties.xml | 5 +-
.../web/app/Application_de.properties.xml | 178 ++++++++++-----------
.../web/app/Application_el.properties.xml | 5 +-
.../web/app/Application_es.properties.xml | 9 +-
.../web/app/Application_fa.properties.xml | 5 +-
.../web/app/Application_fi.properties.xml | 5 +-
.../web/app/Application_fr.properties.xml | 5 +-
.../web/app/Application_gl.properties.xml | 5 +-
.../web/app/Application_hi.properties.xml | 117 +++++++-------
.../web/app/Application_hu.properties.xml | 5 +-
.../web/app/Application_in.properties.xml | 5 +-
.../web/app/Application_it.properties.xml | 5 +-
.../web/app/Application_iw.properties.xml | 5 +-
.../web/app/Application_ja.properties.xml | 5 +-
.../web/app/Application_ko.properties.xml | 5 +-
...roperties.xml => Application_lo.properties.xml} | 91 +++++------
.../web/app/Application_nl.properties.xml | 5 +-
.../web/app/Application_pl.properties.xml | 5 +-
.../web/app/Application_pt.properties.xml | 5 +-
.../web/app/Application_pt_BR.properties.xml | 5 +-
.../web/app/Application_ru.properties.xml | 13 +-
.../web/app/Application_sk.properties.xml | 5 +-
.../web/app/Application_sv.properties.xml | 5 +-
.../web/app/Application_ta.properties.xml | 5 +-
.../web/app/Application_th.properties.xml | 5 +-
.../web/app/Application_tr.properties.xml | 5 +-
.../web/app/Application_uk.properties.xml | 5 +-
.../web/app/Application_zh_CN.properties.xml | 5 +-
.../web/app/Application_zh_TW.properties.xml | 5 +-
.../apache/openmeetings/web/pages/HashPage.java | 24 ++-
.../src/main/webapp/languages/languages.xml | 1 +
openmeetings-webservice/pom.xml | 2 +-
pom.xml | 16 +-
54 files changed, 488 insertions(+), 418 deletions(-)
[openmeetings] 02/02: [OPENMEETINGS-2402] upload seems to work
Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch OPENMEETINGS-2402-reworked-upload
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
commit 4f3bb87822f8c6295ebc2d652330d17eed1d5150
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Aug 23 17:27:39 2020 +0700
[OPENMEETINGS-2402] upload seems to work
---
.../web/common/tree/FileTreePanel.java | 6 +-
.../sidebar/RoomFileUploadResourceReference.java | 25 +--
.../web/room/sidebar/UploadDialog.html | 3 +
.../web/room/sidebar/UploadDialog.java | 5 +-
.../apache/openmeetings/web/room/sidebar/upload.js | 167 +++++++++++++--------
5 files changed, 131 insertions(+), 75 deletions(-)
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 1d96d1e..d60e6a7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -88,9 +88,9 @@ import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome5I
public abstract class FileTreePanel extends Panel {
private static final long serialVersionUID = 1L;
private static final String BASE_CLASS = " om-icon big clickable";
- private static final String UPLOAD_CLASS = "add" + BASE_CLASS + ALIGN_LEFT;
- private static final String CREATE_DIR_CLASS = "folder-create" + BASE_CLASS + ALIGN_LEFT;
- private static final String TRASH_CLASS = "trash" + BASE_CLASS + ALIGN_RIGHT;
+ private static final String UPLOAD_CLASS = "add" + BASE_CLASS + " " + ALIGN_LEFT;
+ private static final String CREATE_DIR_CLASS = "folder-create" + BASE_CLASS + " " + ALIGN_LEFT;
+ private static final String TRASH_CLASS = "trash" + BASE_CLASS + " " + ALIGN_RIGHT;
private static final String DISABLED_CLASS = " disabled";
final WebMarkupContainer trees = new WebMarkupContainer("tree-container");
private final WebMarkupContainer sizes = new WebMarkupContainer("sizes");
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
index 1c9c94a..35d2943 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.web.room.sidebar;
+import static java.util.UUID.randomUUID;
import static org.apache.openmeetings.util.OpenmeetingsVariables.getMaxUploadSize;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
import static org.apache.openmeetings.web.util.ThreadHelper.startRunnable;
@@ -156,6 +157,7 @@ public class RoomFileUploadResourceReference extends ResourceReference {
final BaseFileItem parent = fileDao.get(lastSelected);
final long langId = getLangId(c);
final long totalSize = files.stream().mapToLong(FileItem::getSize).sum();
+ final String uuid = randomUUID().toString();
final AtomicInteger progress = new AtomicInteger(0);
long currentSize = 0;
for (FileItem curItem : files) {
@@ -177,12 +179,12 @@ public class RoomFileUploadResourceReference extends ResourceReference {
f.setInsertedBy(getUserId());
ProcessResultList logs = processor.processFile(f, curItem.getInputStream()
- , Optional.<DoubleConsumer>of(part -> sendProgress(c, progress, progress.get() + (int)(100 * part * size / totalSize))));
+ , Optional.<DoubleConsumer>of(part -> sendProgress(c, uuid, progress, progress.get() + (int)(100 * part * size / totalSize))));
for (ProcessResult res : logs.getJobs()) {
fileLogDao.add(res.getProcess(), f, res);
}
if (logs.hasError()) {
- sendError(c, Application.getString("convert.errors.file", langId));
+ sendError(c, uuid, Application.getString("convert.errors.file", langId));
} else {
if (toWb) {
//FIXME TODO room.getWb().sendFileToWb(f, clean);
@@ -191,26 +193,31 @@ public class RoomFileUploadResourceReference extends ResourceReference {
}
} catch (Exception e) {
log.error("Unexpected error while processing uploaded file", e);
- sendError(c, e.getMessage() == null ? "Unexpected error" : e.getMessage());
+ sendError(c, uuid, e.getMessage() == null ? "Unexpected error" : e.getMessage());
} finally {
curItem.delete();
}
currentSize += size;
- sendProgress(c, progress, (int)(100 * currentSize / totalSize));
+ sendProgress(c, uuid, progress, (int)(100 * currentSize / totalSize));
}
- sendProgress(c, progress, 100);
+ sendProgress(c, uuid, progress, 100);
}
- private void sendError(Client c, String msg) {
- WebSocketHelper.sendClient(c, new JSONObject()
+ private JSONObject getBaseMessage(String uuid) {
+ return new JSONObject()
+ .put("uuid", uuid)
+ .put("type", "room-upload");
+ }
+ private void sendError(Client c, String uuid, String msg) {
+ WebSocketHelper.sendClient(c, getBaseMessage(uuid)
.put("status", Status.ERROR.name())
.put("message", msg));
}
- private void sendProgress(Client c, AtomicInteger progress, int cur) {
+ private void sendProgress(Client c, String uuid, AtomicInteger progress, int cur) {
if (cur > progress.get()) {
progress.set(cur);
- WebSocketHelper.sendClient(c, new JSONObject()
+ WebSocketHelper.sendClient(c, getBaseMessage(uuid)
.put("status", Status.PROGRESS.name())
.put("progress", cur));
}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
index 81c9a4e..26441e3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
@@ -40,6 +40,9 @@
<input wicket:id="sid" name="room-upload-sid" type="hidden"/>
<input wicket:id="lastSelected" name="room-upload-last-selected" type="hidden" value=""/>
</form>
+ <div class="progress d-none">
+ <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div>
+ </div>
<div id="progress"></div>
</wicket:extend>
</html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
index 1651cc8..b2b23fe 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
@@ -37,14 +37,11 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.util.lang.Bytes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
public class UploadDialog extends Modal<String> {
private static final long serialVersionUID = 1L;
- private static final Logger log = LoggerFactory.getLogger(UploadDialog.class);
private final WebMarkupContainer form = new WebMarkupContainer("form");
private final RoomFilePanel roomFiles;
private final RoomPanel room;
@@ -86,7 +83,7 @@ public class UploadDialog extends Modal<String> {
public Modal<String> show(IPartialPageRequestHandler handler) {
lastSelected.add(AttributeAppender.replace("value", roomFiles.getLastSelected().getId()));
handler.add(form.setVisible(true));
- handler.appendJavaScript(String.format("bindUpload();"));
+ handler.appendJavaScript(String.format("Upload.bindUpload();"));
return super.show(handler);
}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
index 0791978..d378dc6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
@@ -1,63 +1,112 @@
/* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
-function bindUpload() {
- const form = $('#room-upload-form')
- , fi = form.find('.fileinput')
- let uploadBtn = $('#room-upload-btn');
- if (uploadBtn.length === 0) {
- uploadBtn = $('<button id="room-upload-btn" class="btn btn-outline-primary"></button>')
- .text(form.data('upload-lbl'));
- form.parents('.modal-content').find('.modal-footer').prepend(uploadBtn);
- uploadBtn.click(function() {
- $.ajax({
- url: form.attr('action')
- , type: 'POST'
- , data: new FormData($('#room-upload-form')[0])
- , processData: false
- , contentType: false
- }).done(function(data) {
- let i = 0;
- }).fail(function(e) {
- let i = 0;
- });
- });
- }
- uploadBtn.attr('disabled', 'disabled');
- if (!fi.eventAdded) {
- fi.on('change.bs.fileinput', function(event) {
- event.stopPropagation();
- const th = $(this)
- , fInput = th.find('input[type=file]')
- , fn = th.find('.fileinput-filename')
- , files = fInput[0].files
- , errors = form.find('.error');
- errors.html('');
- let valid = files !== undefined && files.length > 0;
- if (valid) {
- const size = Array.from(files).map(f => f.size).reduce((a, b) => a + b, 0);
- valid = size < +form.data('max-size');
- if (!valid) {
- errors.html($('<div class="alert alert-danger" role="alert"></div>').text(form.data('max-upload-lbl') + ' ' + form.data('max-size-lbl')));
- }
- }
- if (valid) {
- fn.text(Array.from(files).map(f => f.name).join(', '));
- uploadBtn.removeAttr('disabled');
- } else {
- fn.text('');
- uploadBtn.attr('disabled', 'disabled');
- $('#room-upload-file').val('');
+var Upload = (function() {
+ let progress, progressBar, curUid;
+
+ function _onWsMessage(jqEvent, msg) {
+ try {
+ if (msg instanceof Blob) {
+ return; //ping
}
- fInput.attr('title', fn.text());
- return false;
- });
- $('#room-upload-to-wb').click(function() {
- const clnBlock = $('#room-upload-clean-block');
- if ($(this).prop('checked')) {
- clnBlock.removeClass('d-none');
- } else {
- clnBlock.addClass('d-none');
+ const m = JSON.parse(msg);
+ if (m && 'room-upload' === m.type && curUid === m.uuid) {
+ switch (m.status) {
+ case 'ERROR':
+ OmUtil.error(m.message);
+ break;
+ case 'PROGRESS': {
+ const progressP = m.progress + '%';
+ progressBar.css('width', progressP).attr('aria-valuenow', m.progress).text(progressP);
+ if (m.progress === 100) {
+ $('#room-upload-form').parents('.modal').modal('hide');
+ _cleanup();
+ }
+ }
+ break;
+ default:
+ //no-op
+ }
}
- });
- fi.eventAdded = true;
+ } catch (err) {
+ OmUtil.error(err);
+ }
+ }
+ function _cleanup() {
+ Wicket.Event.unsubscribe('/websocket/message', _onWsMessage);
+ }
+ function _bindUpload() {
+ const form = $('#room-upload-form')
+ , fi = form.find('.fileinput')
+ progress = form.parent().find('.progress');
+ progressBar = form.parent().find('.progress-bar');
+ _cleanup();
+ form.show();
+ progress.addClass('d-none');
+ let uploadBtn = $('#room-upload-btn');
+ if (uploadBtn.length === 0) {
+ uploadBtn = $('<button id="room-upload-btn" class="btn btn-outline-primary"></button>')
+ .text(form.data('upload-lbl'));
+ form.parents('.modal-content').find('.modal-footer').prepend(uploadBtn);
+ uploadBtn.click(function() {
+ const form = $('#room-upload-form');
+ $.ajax({
+ url: form.attr('action')
+ , type: 'POST'
+ , data: new FormData($('#room-upload-form')[0])
+ , processData: false
+ , contentType: false
+ }).done(function(data) {
+ curUid = data.uuid;
+ uploadBtn.attr('disabled', 'disabled');
+ form.hide();
+ progress.removeClass('d-none');
+ Wicket.Event.subscribe('/websocket/message', _onWsMessage);
+ }).fail(function(e) {
+ OmUtil.error(e.message);
+ });
+ });
+ }
+ uploadBtn.attr('disabled', 'disabled');
+ if (!fi.eventAdded) {
+ fi.on('change.bs.fileinput', function(event) {
+ event.stopPropagation();
+ const th = $(this)
+ , fInput = th.find('input[type=file]')
+ , fn = th.find('.fileinput-filename')
+ , files = fInput[0].files
+ , errors = form.find('.error');
+ errors.html('');
+ let valid = files !== undefined && files.length > 0;
+ if (valid) {
+ const size = Array.from(files).map(f => f.size).reduce((a, b) => a + b, 0);
+ valid = size < +form.data('max-size');
+ if (!valid) {
+ errors.html($('<div class="alert alert-danger" role="alert"></div>').text(form.data('max-upload-lbl') + ' ' + form.data('max-size-lbl')));
+ }
+ }
+ if (valid) {
+ fn.text(Array.from(files).map(f => f.name).join(', '));
+ uploadBtn.removeAttr('disabled');
+ } else {
+ fn.text('');
+ uploadBtn.attr('disabled', 'disabled');
+ $('#room-upload-file').val('');
+ }
+ fInput.attr('title', fn.text());
+ return false;
+ });
+ $('#room-upload-to-wb').click(function() {
+ const clnBlock = $('#room-upload-clean-block');
+ if ($(this).prop('checked')) {
+ clnBlock.removeClass('d-none');
+ } else {
+ clnBlock.addClass('d-none');
+ }
+ });
+ fi.eventAdded = true;
+ }
}
-}
+
+ return {
+ bindUpload: _bindUpload
+ };
+})();