Author: solomax
Date: Wed Apr 24 19:47:45 2013
New Revision: 1471610

URL: http://svn.apache.org/r1471610
Log:
[OPENMEETINGS-612] Profile image upload is implemented;
        code clean-up;

Added:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java
Modified:
    openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ImportHelper.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/OmFileHelper.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/StoredFile.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java

Modified: openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css 
(original)
+++ openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css Wed 
Apr 24 19:47:45 2013
@@ -554,3 +554,31 @@ div.tableWrapper {
        background-image: 
url(../public/themes/basic-theme/dashboard/wizzard_button_4.png);
        margin-left: 60px;
 }
+.profile {
+       display: inline-block;
+       position: relative;
+}
+.profile .upload, .profile .uploadtext {
+       display: inline-block;
+       position: absolute;
+       bottom: -20px;
+       left: 0px;
+       opacity: .7;
+       width: 100%;
+       padding: 5px;
+       z-index: 50;
+}
+.profile .upload {
+       z-index: 100;
+       cursor: pointer;
+}
+.profile .uploadtext:hover {
+       opacity: 1;
+}
+.profile .upload input {
+       position: relative;
+       height: 100%;
+       opacity: 0;
+       width: 100%;
+       cursor: pointer;
+}

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java
 Wed Apr 24 19:47:45 2013
@@ -18,15 +18,20 @@
  */
 package org.apache.openmeetings.documents;
 
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.utils.OmFileHelper.bigImagePrefix;
 import static org.apache.openmeetings.utils.OmFileHelper.chatImagePrefix;
+import static 
org.apache.openmeetings.utils.OmFileHelper.getUploadProfilesUserDir;
+import static org.apache.openmeetings.utils.OmFileHelper.profileFileExt;
+import static org.apache.openmeetings.utils.OmFileHelper.profileFileName;
 import static org.apache.openmeetings.utils.OmFileHelper.profileImagePrefix;
 import static org.apache.openmeetings.utils.OmFileHelper.thumbImagePrefix;
 
 import java.io.File;
+import java.io.FileFilter;
 import java.io.IOException;
 
-import org.apache.openmeetings.OpenmeetingsVariables;
+import org.apache.commons.transaction.util.FileHelper;
 import org.apache.openmeetings.data.flvrecord.converter.BaseConverter;
 import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.documents.beans.ConverterProcessResult;
@@ -40,8 +45,7 @@ import org.springframework.beans.factory
 
 public class GenerateImage extends BaseConverter {
 
-       private static final Logger log = Red5LoggerFactory.getLogger(
-                       GenerateImage.class, 
OpenmeetingsVariables.webAppRootKey);
+       private static final Logger log = 
Red5LoggerFactory.getLogger(GenerateImage.class, webAppRootKey);
 
        @Autowired
        private UsersDao usersDao;
@@ -74,34 +78,32 @@ public class GenerateImage extends BaseC
                return returnMap;
        }
 
-       public ConverterProcessResultList convertImageUserProfile(String 
fileName, String fileExt, Long users_id,
-                       String fileNameShort, boolean fullProcessing) throws 
Exception {
-
+       public ConverterProcessResultList convertImageUserProfile(File file, 
Long users_id, boolean skipConvertion) throws Exception {
                ConverterProcessResultList returnMap = new 
ConverterProcessResultList();
-
-               File working_pptdir = 
OmFileHelper.getUploadTempProfilesUserDir(users_id);
-
-               String fileFullPath = new File(working_pptdir, fileName + 
fileExt).getCanonicalPath();
-
-               File destinationFile = 
OmFileHelper.getNewFile(OmFileHelper.getUploadProfilesUserDir(users_id), 
fileName, ".jpg");
-               ConverterProcessResult processJPG = this.convertSingleJpg(
-                               fileFullPath, destinationFile);
-
-               ConverterProcessResult processThumb1 = 
generateThumbs.generateThumb(
-                               chatImagePrefix, destinationFile, 40);
-               ConverterProcessResult processThumb2 = 
generateThumbs.generateThumb(
-                               profileImagePrefix, destinationFile, 126);
-               ConverterProcessResult processThumb3 = 
generateThumbs.generateThumb(
-                               bigImagePrefix, destinationFile, 240);
-
-               returnMap.addItem("processJPG", processJPG);
-               returnMap.addItem("processThumb1", processThumb1);
-               returnMap.addItem("processThumb2", processThumb2);
-               returnMap.addItem("processThumb3", processThumb3);
-
-               // Delete old one
-               File fToDelete = new File(fileFullPath);
-               fToDelete.delete();
+               
+               // User Profile Update
+               for (File f : getUploadProfilesUserDir(users_id).listFiles(new 
FileFilter() {
+                       public boolean accept(File pathname) {
+                               return 
pathname.getName().endsWith(profileFileExt);
+                       }
+               })) {
+                       FileHelper.removeRec(f);
+               }
+               
+               File destinationFile = 
OmFileHelper.getNewFile(getUploadProfilesUserDir(users_id), profileFileName, 
profileFileExt);
+               if (!skipConvertion) {
+                       returnMap.addItem("processJPG", 
convertSingleJpg(file.getCanonicalPath(), destinationFile));
+               } else {
+                       FileHelper.copy(file, destinationFile);
+               }
+               returnMap.addItem("processThumb1", 
generateThumbs.generateThumb(chatImagePrefix, destinationFile, 40));
+               returnMap.addItem("processThumb2", 
generateThumbs.generateThumb(profileImagePrefix, destinationFile, 126));
+               returnMap.addItem("processThumb3", 
generateThumbs.generateThumb(bigImagePrefix, destinationFile, 240));
+
+               if (!skipConvertion) {
+                       // Delete old one
+                       file.delete();
+               }
 
                String pictureuri = destinationFile.getName();
                User us = usersDao.get(users_id);

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
 Wed Apr 24 19:47:45 2013
@@ -20,6 +20,7 @@ package org.apache.openmeetings.installa
 
 import static 
org.apache.openmeetings.persistence.beans.basic.Configuration.CRYPT_KEY;
 import static 
org.apache.openmeetings.persistence.beans.basic.Configuration.DEFAUT_LANG_KEY;
+import static 
org.apache.openmeetings.persistence.beans.basic.Configuration.MAX_UPLOAD_SIZE_KEY;
 
 import java.io.File;
 import java.util.Arrays;
@@ -428,7 +429,7 @@ public class ImportInitvalues {
                                                null,
                                                "Display name of the user who 
draw the current object (User Name auto-disapper after 3 seconds.");
 
-               configurationDao.add("max_upload_size", ""
+               configurationDao.add(MAX_UPLOAD_SIZE_KEY, ""
                                + ImportHelper.DEFAULT_MAX_UPLOAD_SIZE, null,
                                "Maximum size of upload file (bytes)"); // 
defaults to 1GB
 

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java
 Wed Apr 24 19:47:45 2013
@@ -59,6 +59,7 @@ public class Configuration implements Se
        private static final long serialVersionUID = -6129473946508963339L;
        public static final String CRYPT_KEY = "crypt_ClassName";
        public static final String DEFAUT_LANG_KEY = "default_lang_id";
+       public static final String MAX_UPLOAD_SIZE_KEY = "max_upload_size";
 
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java
 Wed Apr 24 19:47:45 2013
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.remote;
 
+import static 
org.apache.openmeetings.persistence.beans.basic.Configuration.MAX_UPLOAD_SIZE_KEY;
+
 import java.util.Date;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -714,7 +716,7 @@ public class MainService implements IPen
        
        public List<Configuration> getGeneralOptions(String SID) {
                try {
-                       return configurationDao.get("exclusive.audio.keycode", 
"red5sip.enable", "max_upload_size",
+                       return configurationDao.get("exclusive.audio.keycode", 
"red5sip.enable", MAX_UPLOAD_SIZE_KEY,
                                        "mute.keycode");
                } catch (Exception err) {
                        log.error("[getLoginOptions]",err);

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java
 Wed Apr 24 19:47:45 2013
@@ -278,11 +278,8 @@ public class UploadController extends Ab
                        log.debug("##### isImage! userProfilePic: " + 
userProfile);
 
                        if (userProfile) {
-                               // User Profile Update
-                               this.deleteUserProfileFiles(userId);
                                // convert it to JPG
-                               returnError = 
generateImage.convertImageUserProfile(
-                                       newFileName, newFileExtDot, userId, 
newFileName, false);
+                               returnError = 
generateImage.convertImageUserProfile(completeName, userId, true);
                        } else {
                                // convert it to JPG
                                log.debug("##### convert it to JPG: " + 
userProfile);

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ImportHelper.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ImportHelper.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ImportHelper.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ImportHelper.java
 Wed Apr 24 19:47:45 2013
@@ -18,11 +18,13 @@
  */
 package org.apache.openmeetings.utils;
 
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+import static 
org.apache.openmeetings.persistence.beans.basic.Configuration.MAX_UPLOAD_SIZE_KEY;
+
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
 import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
 import org.red5.logging.Red5LoggerFactory;
@@ -36,8 +38,7 @@ import org.slf4j.Logger;
  * 
  */
 public class ImportHelper {
-       private static final Logger log = Red5LoggerFactory.getLogger(
-                       ImportHelper.class, 
OpenmeetingsVariables.webAppRootKey);
+       private static final Logger log = 
Red5LoggerFactory.getLogger(ImportHelper.class, webAppRootKey);
        public static final long DEFAULT_MAX_UPLOAD_SIZE = 1024 * 1024 * 1024; 
// 1GB
 
        /**
@@ -46,10 +47,9 @@ public class ImportHelper {
         * @param configurationDao
         * @return
         */
-       public static final long getMaxUploadSize(
-                       ConfigurationDao configurationDao) {
+       public static final long getMaxUploadSize(ConfigurationDao 
configurationDao) {
                try {
-                       return configurationDao.getConfValue("max_upload_size",
+                       return 
configurationDao.getConfValue(MAX_UPLOAD_SIZE_KEY,
                                        Long.class, "" + 
DEFAULT_MAX_UPLOAD_SIZE);
                } catch (Exception e) {
                        log.error("Invalid value saved for max_upload_size conf 
key: ", e);

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/OmFileHelper.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/OmFileHelper.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/OmFileHelper.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/OmFileHelper.java
 Wed Apr 24 19:47:45 2013
@@ -62,6 +62,8 @@ public class OmFileHelper {
        public static final String nameOfErrorFile = "errorvalues.xml";
        public static final String libraryFileName = "library.xml";
        public static final String defaultProfileImageName = "profile_pic.jpg";
+       public static final String profileFileName = "profile";
+       public static final String profileFileExt = ".jpg";
        public static final String profileImagePrefix = "_profile_";
        public static final String chatImagePrefix = "_chat_";
        public static final String bigImagePrefix = "_big_";

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/StoredFile.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/StoredFile.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/StoredFile.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/StoredFile.java
 Wed Apr 24 19:47:45 2013
@@ -56,6 +56,12 @@ public class StoredFile {
     private final String name;
        private final String ext;
 
+    public StoredFile(String fullname) {
+       int idx = fullname.lastIndexOf('.');
+       name = idx < 0 ? fullname : fullname.substring(0, idx);
+       ext = idx < 0 ? "" : fullname.substring(idx + 1);
+    }
+    
     public StoredFile(String name, String ext) {
         this.name = name;
         this.ext = ext;

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.html?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.html
 Wed Apr 24 19:47:45 2013
@@ -20,6 +20,6 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
        <wicket:panel>
-               <div wicket:id="profile"><img wicket:id="img"/></div>
+               <div class="profile" wicket:id="profile"><img 
wicket:id="img"/><wicket:child/></div>
        </wicket:panel>
 </html>

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/ProfileImagePanel.java
 Wed Apr 24 19:47:45 2013
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.components;
 
 import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -26,9 +27,9 @@ import java.net.URI;
 
 import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.utils.OmFileHelper;
-import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.image.Image;
 import org.apache.wicket.request.resource.ByteArrayResource;
@@ -39,11 +40,13 @@ import org.slf4j.Logger;
 public class ProfileImagePanel extends BasePanel {
        private static final long serialVersionUID = 1119719397241677937L;
        private static final Logger log = 
Red5LoggerFactory.getLogger(ProfileImagePanel.class, webAppRootKey);
-
+       protected final WebMarkupContainer profile;
+       
        public ProfileImagePanel(String id, final long userId) {
                super(id);
-               WebMarkupContainer profile = new WebMarkupContainer("profile");
-               final String uri = 
Application.getBean(UsersDao.class).get(userId).getPictureuri();
+               
+               profile = new TransparentWebMarkupContainer("profile");
+               final String uri = 
getBean(UsersDao.class).get(userId).getPictureuri();
                boolean absolute = false;
                try {
                        absolute = URI.create(uri).isAbsolute();
@@ -75,6 +78,6 @@ public class ProfileImagePanel extends B
                                }
                        }));
                }
-               add(profile);
+               add(profile.setOutputMarkupId(true));
        }
 }

Added: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.html?rev=1471610&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.html
 (added)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.html
 Wed Apr 24 19:47:45 2013
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org";>
+       <wicket:extend>
+               <form wicket:id="form"><div 
+                       class="uploadtext"><wicket:ommessage 
key="379"/></div><div class="upload"><input type="file" 
+                       wicket:id="image"/><span 
wicket:id="progress">[progressbar]</span></div></form>
+       </wicket:extend>
+</html>
\ No newline at end of file

Added: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java?rev=1471610&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java
 Wed Apr 24 19:47:45 2013
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.components;
+
+import static org.apache.openmeetings.utils.ImportHelper.getMaxUploadSize;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
+import org.apache.openmeetings.documents.GenerateImage;
+import org.apache.openmeetings.utils.StoredFile;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import 
org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.markup.html.form.upload.FileUploadField;
+import org.apache.wicket.util.lang.Bytes;
+
+public class UploadableProfileImagePanel extends ProfileImagePanel {
+       private static final long serialVersionUID = -6681473769070950510L;
+       private FileUploadField fileUploadField;
+       
+       public UploadableProfileImagePanel(String id, final long userId) {
+               super(id, userId);
+               Form<Void> form = new Form<Void>("form");
+               form.setMultiPart(true);
+               
form.setMaxSize(Bytes.bytes(getMaxUploadSize(getBean(ConfigurationDao.class))));
+               form.add(fileUploadField = new FileUploadField("image"));
+               form.add(new UploadProgressBar("progress", form, 
fileUploadField));
+               fileUploadField.add(new AjaxFormSubmitBehavior(form, 
"onchange") {
+                       private static final long serialVersionUID = 
2160216679027859231L;
+
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target) {
+                               FileUpload fu = fileUploadField.getFileUpload();
+                               if (fu != null) {
+                                       StoredFile sf = new 
StoredFile(fu.getClientFileName());
+                                       if (sf.isImage()) {
+                                               boolean asIs = sf.isAsIs();
+                                               try {
+                                                       //FIXME need to work 
with InputStream !!!
+                                                       
getBean(GenerateImage.class)
+                                                               
.convertImageUserProfile(fu.writeToTempFile(), userId, asIs);
+                                                       target.add(profile);
+                                               } catch (Exception e) {
+                                                       // TODO display error
+                                                       e.printStackTrace();
+                                               }
+                                       } else {
+                                               //TODO display error
+                                       }
+                               }
+                       }
+               });
+               add(form);
+       }
+}

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java?rev=1471610&r1=1471609&r2=1471610&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java
 Wed Apr 24 19:47:45 2013
@@ -24,7 +24,7 @@ import org.apache.openmeetings.data.user
 import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.persistence.beans.user.User;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.components.ProfileImagePanel;
+import org.apache.openmeetings.web.components.UploadableProfileImagePanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.markup.html.basic.Label;
@@ -40,7 +40,7 @@ public class WelcomeWidgetView extends W
                super(id, model);
 
                User u = Application.getBean(UsersDao.class).get(getUserId());
-               add(new ProfileImagePanel("img", getUserId()));
+               add(new UploadableProfileImagePanel("img", getUserId()));
                 //FIXME this need to be aligned according to Locale
                add(new Label("firstname", Model.of(u.getFirstname())));
                add(new Label("lastname", Model.of(u.getLastname())));


Reply via email to