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())));