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 7a5ef06  [OPENMEETINGS-2380] avatar is editable from admin area
7a5ef06 is described below

commit 7a5ef066d4c78d5d822159e8ae2c9a23f086963c
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Sat Jun 6 10:39:51 2020 +0700

    [OPENMEETINGS-2380] avatar is editable from admin area
---
 .../apache/openmeetings/web/admin/users/UserForm.html  |  4 ++++
 .../apache/openmeetings/web/admin/users/UserForm.java  |  5 +++++
 .../web/common/UploadableProfileImagePanel.java        | 18 +++++++++++++++---
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
index da6e933..4f96b14 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
@@ -26,6 +26,10 @@
                        <legend>
                                <wicket:message key="143" />
                        </legend>
+                       <div class="formelement row">
+                               <span class="col-3 text-right"></span>
+                               <span class="col-8" wicket:id="avatar"></span>
+                       </div>
                        <div class="formelement">
                                <label wicket:for="login" class="col-3 
text-right"><wicket:message key="108" /></label><input type="text" 
wicket:id="login" class="col-8"/>
                        </div>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index 83e0374..d574583 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -49,6 +49,7 @@ import org.apache.openmeetings.service.mail.EmailManager;
 import org.apache.openmeetings.web.admin.AdminBaseForm;
 import org.apache.openmeetings.web.common.ComunityUserForm;
 import org.apache.openmeetings.web.common.GeneralUserForm;
+import org.apache.openmeetings.web.common.UploadableProfileImagePanel;
 import org.apache.openmeetings.web.util.DateLabel;
 import org.apache.openmeetings.web.util.RestrictiveChoiceProvider;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -94,6 +95,7 @@ public class UserForm extends AdminBaseForm<User> {
        private final Modal<String> warning;
        private final DropDownChoice<Long> domainId = new 
DropDownChoice<>("domainId");
        private final PasswordDialog adminPass;
+       private final UploadableProfileImagePanel avatar = new 
UploadableProfileImagePanel("avatar", null);
        @SpringBean
        private UserDao userDao;
        @SpringBean
@@ -115,6 +117,7 @@ public class UserForm extends AdminBaseForm<User> {
        protected void onInitialize() {
                super.onInitialize();
                add(mainContainer);
+               mainContainer.add(avatar.setOutputMarkupPlaceholderTag(true));
                mainContainer.add(generalForm = new GeneralUserForm("general", 
getModel(), true));
                mainContainer.add(password.setResetPassword(false).setLabel(new 
ResourceModel("110")).setRequired(false)
                                .add(passValidator = new 
StrongPasswordValidator(getModelObject())));
@@ -338,6 +341,8 @@ public class UserForm extends AdminBaseForm<User> {
 
        public void update(AjaxRequestTarget target) {
                updateDomain(target);
+               avatar.setUserId(getModelObject().getId());
+               avatar.update();
                if (target != null) {
                        target.add(this, listContainer);
                }
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 9d52c4a..a2249b1 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
@@ -27,24 +27,31 @@ import java.io.File;
 
 import org.apache.openmeetings.core.converter.ImageConverter;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.StoredFile;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
 public class UploadableProfileImagePanel extends UploadableImagePanel {
        private static final long serialVersionUID = 1L;
-       private final long userId;
+       private Long userId;
        @SpringBean
        private ImageConverter converter;
        @SpringBean
        private UserDao userDao;
 
-       public UploadableProfileImagePanel(String id, final long userId) {
+       public UploadableProfileImagePanel(String id, final Long userId) {
                super(id, false);
                this.userId = userId;
        }
 
        @Override
+       protected void onConfigure() {
+               super.onConfigure();
+               setVisible(userDao.get(userId) != null);
+       }
+
+       @Override
        protected void processImage(StoredFile sf, File f) throws Exception {
                converter.convertImageUserProfile(f, userId, sf.isAsIs());
        }
@@ -59,6 +66,11 @@ public class UploadableProfileImagePanel extends 
UploadableImagePanel {
 
        @Override
        protected String getImageUrl() {
-               return getUrl(getRequestCycle(), userDao.get(userId));
+               User u = userDao.get(userId);
+               return u == null ? "" : getUrl(getRequestCycle(), u);
+       }
+
+       public void setUserId(Long userId) {
+               this.userId = userId;
        }
 }

Reply via email to