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 2023/08/23 11:58:49 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2776] profile image will be shrinked if larger than 250x250px

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 6440427dc [OPENMEETINGS-2776] profile image will be shrinked if larger than 250x250px
6440427dc is described below

commit 6440427dcd52dfd8192d56e014e6b06368cbe069
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Wed Aug 23 18:58:39 2023 +0700

    [OPENMEETINGS-2776] profile image will be shrinked if larger than 250x250px
---
 .../core/converter/ImageConverter.java             | 28 ++++++++--------------
 .../openmeetings/core/ldap/LdapLoginManager.java   |  2 +-
 .../org/apache/openmeetings/util/OmFileHelper.java |  2 +-
 .../openmeetings/web/admin/groups/GroupForm.java   |  2 +-
 .../apache/openmeetings/web/app/Application.java   |  1 +
 .../web/common/UploadableProfileImagePanel.java    |  2 +-
 .../src/main/webapp/css/raw-general.css            |  3 ++-
 7 files changed, 17 insertions(+), 23 deletions(-)

diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
index 0402a00b8..36af1c820 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
@@ -87,28 +87,20 @@ public class ImageConverter extends BaseConverter {
 		return logs;
 	}
 
-	public ProcessResultList convertImageUserProfile(File file, Long userId, boolean skipConvertion) throws Exception {
+	public ProcessResultList convertImageUserProfile(File file, Long userId) throws Exception {
 		ProcessResultList returnMap = new ProcessResultList();
 
 		// User Profile Update
-		File[] files = getUploadProfilesUserDir(userId).listFiles(fi -> fi.getName().endsWith(EXTENSION_PNG));
-		if (files != null) {
-			for (File f : files) {
-				FileUtils.deleteQuietly(f);
-			}
-		}
+		Files.newDirectoryStream(
+				getUploadProfilesUserDir(userId).toPath()
+				, fi -> fi.toString().endsWith(EXTENSION_PNG))
+					.forEach(path -> FileUtils.deleteQuietly(path.toFile()));
 
 		File destinationFile = OmFileHelper.getNewFile(getUploadProfilesUserDir(userId), PROFILE_FILE_NAME, EXTENSION_PNG);
-		if (!skipConvertion) {
-			returnMap.add(convertSinglePng(file, destinationFile));
-		} else {
-			FileUtils.copyFile(file, destinationFile);
-		}
+		returnMap.add(resize(file, destinationFile, 250, 250, true));
 
-		if (!skipConvertion) {
-			// Delete old one
-			Files.deleteIfExists(file.toPath());
-		}
+		// Delete old one
+		Files.deleteIfExists(file.toPath());
 
 		String img = destinationFile.getName();
 		User us = userDao.get(userId);
@@ -159,9 +151,9 @@ public class ImageConverter extends BaseConverter {
 		return ProcessHelper.exec("convertSinglePng", argv);
 	}
 
-	public ProcessResult resize(File in, File out, Integer width, Integer height) throws IOException {
+	public ProcessResult resize(File in, File out, Integer width, Integer height, boolean max) throws IOException {
 		List<String> argv = List.of(getPathToConvert()
-				, "-resize", (width == null ? "" : width) + (height == null ? "" : "x" + height)
+				, "-resize", (width == null ? "" : width) + (height == null ? "" : "x" + height) + (max ? ">" : "")
 				, in.getCanonicalPath(), out.getCanonicalPath());
 		return ProcessHelper.exec("resize", argv);
 	}
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
index 33139d299..bdce1e700 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
@@ -355,7 +355,7 @@ public class LdapLoginManager {
 			try {
 				tempImage = Files.createTempFile("omLdap", "img");
 				FileUtils.copyToFile(is, tempImage.toFile());
-				imageConverter.convertImageUserProfile(tempImage.toFile(), inUser.getId(), sf.isAsIs());
+				imageConverter.convertImageUserProfile(tempImage.toFile(), inUser.getId());
 				u = userDao.get(inUser.getId());
 			} catch (Exception e) {
 				log.error("Unable to store binary image from LDAP", e);
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
index 5d2d6dff0..2b82d394a 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
@@ -327,7 +327,7 @@ public class OmFileHelper {
 		File f = new File(dir, getName(name, ext));
 		int recursiveNumber = 0;
 		while (f.exists()) {
-			f = new File(dir, name + "_" + (recursiveNumber++) + ext);
+			f = new File(dir, name + "_" + (recursiveNumber++) + "." + ext);
 		}
 		f.createNewFile();
 		return f;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
index fdf7d3048..aacb0b4cf 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -76,7 +76,7 @@ public class GroupForm extends AdminBaseForm<Group> {
 
 		@Override
 		protected void processImage(StoredFile sf, File f) throws Exception {
-			imageConverter.resize(f, getGroupLogo(GroupForm.this.getModelObject().getId(), false), null, 28);
+			imageConverter.resize(f, getGroupLogo(GroupForm.this.getModelObject().getId(), false), null, 28, true);
 		}
 
 		@Override
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index de6884a63..a8c459869 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -307,6 +307,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		Bootstrap.builder().withBootstrapSettings(settings).install(this);
 		WysiwygLibrarySettings.get().setBootstrapCssReference(null);
 		WysiwygLibrarySettings.get().setBootstrapDropDownJavaScriptReference(null);
+		WysiwygLibrarySettings.get().setPrettifyJavaScriptReference(null);
 
 		// register some widgets
 		final DashboardContext dashboardContext = getDashboardContext();
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
index 2361e7209..57b3e0084 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
@@ -54,7 +54,7 @@ public class UploadableProfileImagePanel extends UploadableImagePanel {
 
 	@Override
 	protected void processImage(StoredFile sf, File f) throws Exception {
-		converter.convertImageUserProfile(f, userId, sf.isAsIs());
+		converter.convertImageUserProfile(f, userId);
 	}
 
 	@Override
diff --git a/openmeetings-web/src/main/webapp/css/raw-general.css b/openmeetings-web/src/main/webapp/css/raw-general.css
index 99157c19a..8bb974732 100644
--- a/openmeetings-web/src/main/webapp/css/raw-general.css
+++ b/openmeetings-web/src/main/webapp/css/raw-general.css
@@ -471,7 +471,8 @@ select.messages.selector {
 	display: inline-block;
 }
 .profile img {
-	width: 125px;
+	max-width: 125px;
+	max-height: 125px;
 }
 .date.time.picker {
 	font-size: 12px;