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 2022/06/01 08:44:52 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2688] group image can be deleted

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new d42b5dfd0 [OPENMEETINGS-2688] group image can be deleted
d42b5dfd0 is described below

commit d42b5dfd0b0e7c0ffd9a8e62aa27e4b523933741
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Wed Jun 1 15:44:43 2022 +0700

    [OPENMEETINGS-2688] group image can be deleted
---
 .../web/common/UploadableImagePanel.html           |  1 +
 .../web/common/UploadableImagePanel.java           | 56 ++++++++++++++++------
 2 files changed, 42 insertions(+), 15 deletions(-)

diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.html
index defa639f1..5730cc680 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.html
@@ -37,6 +37,7 @@
 			</div>
 		</div>
 		<span wicket:id="progress">[progressbar]</span>
+		<input type="hidden" id="imgDeleted" wicket:id="imgDeleted"/>
 	</form>
 </wicket:extend>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
index 0ec1d92b0..caff47b9f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
@@ -33,8 +33,10 @@ import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.HiddenField;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.model.util.ListModel;
 import org.apache.wicket.util.lang.Bytes;
 import org.slf4j.Logger;
@@ -50,6 +52,7 @@ public abstract class UploadableImagePanel extends ImagePanel {
 	private final FileUploadField fileUploadField = new FileUploadField("image", new ListModel<>());
 	private final Form<Void> form = new Form<>("form");
 	private final boolean delayed;
+	private HiddenField<Boolean> deleted = new HiddenField<>("imgDeleted", Model.of(false));
 
 	protected UploadableImagePanel(String id, boolean delayed) {
 		super(id);
@@ -66,7 +69,7 @@ public abstract class UploadableImagePanel extends ImagePanel {
 		form.setMultiPart(true);
 		form.setMaxSize(Bytes.bytes(getMaxUploadSize()));
 		// Model is necessary here to avoid writing image to the User object
-		form.add(fileUploadField);
+		form.add(fileUploadField, deleted);
 		form.add(new UploadProgressBar("progress", form, fileUploadField));
 		form.addOrReplace(getImage());
 		if (delayed) {
@@ -105,12 +108,27 @@ public abstract class UploadableImagePanel extends ImagePanel {
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
 		if (delayed) {
-			response.render(OnDomReadyHeaderItem.forScript("$('#" + form.getOutputMarkupId() + " .remove').click(function() {$(this).parent().find('.fileinput').fileinput('clear');})"));
+			response.render(OnDomReadyHeaderItem.forScript("""
+					(function(){
+						const form = $('#%s')
+							, fileinput = form.find('.fileinput')
+							, deleted = form.find('#imgDeleted');
+						fileinput.off('change.bs.fileinput').on('change.bs.fileinput', function() {
+							deleted.val(false);
+						});
+						form.siblings('.remove').off()
+							.click(function() {
+								fileinput.fileinput('clear');
+								deleted.val(true);
+							});
+					})();
+					""".formatted(form.getMarkupId())));
 		}
 	}
 
 	@Override
 	public void update() {
+		deleted.setModelObject(false);
 		profile.addOrReplace(new WebMarkupContainer("img").setVisible(false));
 		form.addOrReplace(getImage());
 	}
@@ -121,23 +139,31 @@ public abstract class UploadableImagePanel extends ImagePanel {
 	}
 
 	public void process(Optional<AjaxRequestTarget> target) {
-		FileUpload fu = fileUploadField.getFileUpload();
-		if (fu != null) {
-			File temp = null;
+		if (delayed && Boolean.TRUE.equals(deleted.getModelObject())) {
 			try {
-				temp = fu.writeToTempFile();
-				StoredFile sf = new StoredFile(fu.getClientFileName(), temp);
-				if (sf.isImage()) {
-					processImage(sf, temp);
-				}
+				deleteImage();
 			} catch (Exception e) {
 				log.error("Error", e);
-			} finally {
-				if (temp != null && temp.exists()) {
-					log.debug("Temp file was deleted ? {}", temp.delete());
+			}
+		} else {
+			FileUpload fu = fileUploadField.getFileUpload();
+			if (fu != null) {
+				File temp = null;
+				try {
+					temp = fu.writeToTempFile();
+					StoredFile sf = new StoredFile(fu.getClientFileName(), temp);
+					if (sf.isImage()) {
+						processImage(sf, temp);
+					}
+				} catch (Exception e) {
+					log.error("Error", e);
+				} finally {
+					if (temp != null && temp.exists()) {
+						log.debug("Temp file was deleted ? {}", temp.delete());
+					}
+					fu.closeStreams();
+					fu.delete();
 				}
-				fu.closeStreams();
-				fu.delete();
 			}
 		}
 		update(target);