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 2013/04/26 00:38:34 UTC

svn commit: r1475993 - in /openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components: ./ admin/ admin/users/ user/profile/

Author: solomax
Date: Thu Apr 25 22:38:34 2013
New Revision: 1475993

URL: http://svn.apache.org/r1475993
Log:
[OPENMEETINGS-615] AdminBaseForm panel was refactored to be used in profile save;
	User Profile edit without save/refresh is added;
	Issue with Admin->User->refresh is fixed

Added:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java
Removed:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseFormPanel.html
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseFormPanel.java
Modified:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java

Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html?rev=1475993&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html Thu Apr 25 22:38:34 2013
@@ -0,0 +1,34 @@
+<?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:panel>
+		<div class="formSaveBar">
+			<div class="formSaveButton">
+				<input type="submit" value="" wicket:id="ajax-save-button" wicket:ommessage="title:144" />
+			</div>
+			<div class="formRefreshButton">
+				<input type="submit" value="" wicket:id="ajax-refresh-button" wicket:ommessage="title:156" />
+			</div>
+			<wicket:child/>
+		</div>
+		<div wicket:id="feedback" class="adminFormsFeedbackPanel">[[ feedback ]]</div>
+	</wicket:panel>
+</html>

Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java?rev=1475993&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java Thu Apr 25 22:38:34 2013
@@ -0,0 +1,72 @@
+package org.apache.openmeetings.web.components;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+
+public abstract class FormSaveRefreshPanel<T> extends BasePanel {
+	private static final long serialVersionUID = 6133794730008996211L;
+	protected final FeedbackPanel feedback;
+	
+	public FormSaveRefreshPanel(String id, Form<T> form) {
+		super(id);
+		setOutputMarkupId(true);
+
+		feedback = new FeedbackPanel("feedback");
+		add(feedback.setOutputMarkupId(true));
+
+		// add a save button that can be used to submit the form via ajax
+		add(new AjaxButton("ajax-save-button", form) {
+			private static final long serialVersionUID = 839803820502260006L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				onSaveSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				onSaveError(target, form);
+			}
+		});
+
+		// add a refresh button that can be used to submit the form via ajax
+		add(new AjaxButton("ajax-refresh-button", form) {
+			private static final long serialVersionUID = 839803820502260006L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				hideNewRecord();
+				onRefreshSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				hideNewRecord();
+				onRefreshError(target, form);
+			}
+		});
+
+	}
+	/**
+	 * Hide the new record text
+	 */
+	public void hideNewRecord() {
+		// for admin only, will be implemented in admin
+	}
+	
+	protected abstract void onSaveSubmit(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onSaveError(AjaxRequestTarget target, Form<?> form);
+
+	protected abstract void onRefreshSubmit(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onRefreshError(AjaxRequestTarget target, Form<?> form);
+}

Modified: 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=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java Thu Apr 25 22:38:34 2013
@@ -21,6 +21,8 @@ package org.apache.openmeetings.web.comp
 import static org.apache.openmeetings.utils.ImportHelper.getMaxUploadSize;
 import static org.apache.openmeetings.web.app.Application.getBean;
 
+import java.util.List;
+
 import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
 import org.apache.openmeetings.documents.GenerateImage;
 import org.apache.openmeetings.utils.StoredFile;
@@ -30,6 +32,7 @@ import org.apache.wicket.extensions.ajax
 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.model.IModel;
 import org.apache.wicket.util.lang.Bytes;
 
 public class UploadableProfileImagePanel extends ProfileImagePanel {
@@ -41,7 +44,20 @@ public class UploadableProfileImagePanel
 		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(fileUploadField = new FileUploadField("image", new IModel<List<FileUpload>>() {
+			private static final long serialVersionUID = -8514518605278263956L;
+
+			//FIXME this need to be eliminated
+			public void detach() {
+			}
+			
+			public void setObject(List<FileUpload> object) {
+			}
+			
+			public List<FileUpload> getObject() {
+				return null;
+			}
+		}));
 		form.add(new UploadProgressBar("progress", form, fileUploadField));
 		fileUploadField.add(new AjaxFormSubmitBehavior(form, "onchange") {
 			private static final long serialVersionUID = 2160216679027859231L;

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java?rev=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java Thu Apr 25 22:38:34 2013
@@ -32,11 +32,12 @@ import org.apache.wicket.model.IModel;
  */
 public class AdminBaseForm<T> extends Form<T> {
 	private static final long serialVersionUID = 1L;
-	private AdminBaseFormPanel<T> basePanel;
+	private AdminSavePanel<T> savePanel;
 
 	public AdminBaseForm(String id, IModel<T> object) {
 		super(id, object);
-		basePanel = new AdminBaseFormPanel<T>("buttons", this) {
+		
+		savePanel = new AdminSavePanel<T>("buttons", this) {
 			private static final long serialVersionUID = -5833647470067891270L;
 
 			@Override
@@ -80,7 +81,7 @@ public class AdminBaseForm<T> extends Fo
 			}
 			
 		};
-		add(basePanel);
+		add(savePanel);
 
 
 	}
@@ -89,14 +90,14 @@ public class AdminBaseForm<T> extends Fo
 	 * @see AdminBaseForm#hideNewRecord()
 	 */
 	public void hideNewRecord() {
-		basePanel.hideNewRecord();
+		savePanel.hideNewRecord();
 	}
 	
 	/**
 	 * @see AdminBaseForm#showNewRecord()
 	 */
 	public void showNewRecord() {
-		basePanel.showNewRecord();
+		savePanel.showNewRecord();
 	}
 
 	/**

Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html?rev=1475993&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html Thu Apr 25 22:38:34 2013
@@ -0,0 +1,31 @@
+<?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>
+		<div class="formNewButton">
+			<input type="submit" value="" wicket:id="ajax-new-button" wicket:ommessage="title:155" />
+		</div>
+		<div class="formCancelButton">
+			<input type="submit" value="" wicket:id="ajax-cancel-button" wicket:ommessage="title:157" />
+		</div>
+		<span wicket:id="newRecord"></span>
+	</wicket:extend>
+</html>

Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java?rev=1475993&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java Thu Apr 25 22:38:34 2013
@@ -0,0 +1,91 @@
+package org.apache.openmeetings.web.components.admin;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.components.ConfirmCallListener;
+import org.apache.openmeetings.web.components.FormSaveRefreshPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.Model;
+
+public abstract class AdminSavePanel<T> extends FormSaveRefreshPanel<T> {
+	private static final long serialVersionUID = -8916631148087019924L;
+	private Label newRecord;
+	
+	public AdminSavePanel(String id, final Form<T> form) {
+		super(id, form);
+		
+		newRecord = new Label("newRecord", Model.of(WebSession.getString(344L)));
+		add(newRecord.setVisible(false).setOutputMarkupId(true));
+		
+		// add a new button that can be used to submit the form via ajax
+		add(new AjaxButton("ajax-new-button", form) {
+			private static final long serialVersionUID = 839803820502260006L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				newRecord.setVisible(true);
+				target.add(newRecord);
+				onNewSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				onNewError(target, form);
+			}
+		});
+
+		// add a cancel button that can be used to submit the form via ajax
+		add(new AjaxButton("ajax-cancel-button", form) {
+			private static final long serialVersionUID = 839803820502260006L;
+
+			@Override
+			protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+				super.updateAjaxAttributes(attributes);
+				attributes.getAjaxCallListeners().add(new ConfirmCallListener(833L));
+			}
+			
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				hideNewRecord();
+				onDeleteSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				hideNewRecord();
+				onDeleteError(target, form);
+			}
+		});
+	}
+	
+	/**
+	 * Hide the new record text
+	 */
+	public void hideNewRecord() {
+		newRecord.setVisible(false);
+	}
+	
+	/**
+	 * Hide the new record text
+	 */
+	public void showNewRecord() {
+		newRecord.setVisible(true);
+	}
+
+	protected abstract void onNewSubmit(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onNewError(AjaxRequestTarget target, Form<?> form);
+
+	protected abstract void onDeleteSubmit(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onDeleteError(AjaxRequestTarget target, Form<?> form);
+}

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java?rev=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java Thu Apr 25 22:38:34 2013
@@ -103,7 +103,7 @@ public class UserForm extends AdminBaseF
 	@Override
 	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
 		User user = getModelObject();
-		if (user.getUser_id() <= 0) {
+		if (user.getUser_id() != null) {
 			user = getBean(UsersDao.class).get(user.getUser_id());
 		} else {
 			user = new User();

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html?rev=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html Thu Apr 25 22:38:34 2013
@@ -20,5 +20,35 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
+	<form wicket:id="form" class="adminForm">
+		<div wicket:id="buttons"></div>
+		<table style="width: 100%; height: 100%">
+			<tr>
+				<td rowspan="2">
+					<fieldset>
+						<legend>
+							<wicket:ommessage key="143" />
+						</legend>
+						<form wicket:id="general">
+							Confirm password
+						</form>
+					</fieldset>
+				</td>
+				<td>
+					<div wicket:id="img"></div>
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<fieldset>
+						<legend>
+							<wicket:ommessage key="1159" />
+						</legend>
+						<form wicket:id="comunity"></form>
+					</fieldset>
+				</td>
+			</tr>
+		</table>
+	</form>
 </wicket:panel>
 </html>
\ No newline at end of file

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java?rev=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java Thu Apr 25 22:38:34 2013
@@ -18,12 +18,62 @@
  */
 package org.apache.openmeetings.web.components.user.profile;
 
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.data.user.dao.UsersDao;
+import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.web.components.ComunityUserForm;
+import org.apache.openmeetings.web.components.FormSaveRefreshPanel;
+import org.apache.openmeetings.web.components.GeneralUserForm;
+import org.apache.openmeetings.web.components.UploadableProfileImagePanel;
 import org.apache.openmeetings.web.components.UserPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.CompoundPropertyModel;
 
 public class ProfilePanel extends UserPanel {
 	private static final long serialVersionUID = -5837090230776586182L;
 
 	public ProfilePanel(String id) {
 		super(id);
+		
+		Form<User> form = new Form<User>("form", new CompoundPropertyModel<User>(getBean(UsersDao.class).get(getUserId()))) {
+			private static final long serialVersionUID = -4968428244553170528L;
+
+			{
+				add(new FormSaveRefreshPanel<User>("buttons", this) {
+					private static final long serialVersionUID = 6578425915881674309L;
+
+					@Override
+					protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+						// TODO Auto-generated method stub
+						
+					}
+
+					@Override
+					protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+						// TODO Auto-generated method stub
+						
+					}
+
+					@Override
+					protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+						// TODO Auto-generated method stub
+						
+					}
+
+					@Override
+					protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+						// TODO Auto-generated method stub
+						
+					}
+				});
+				add(new GeneralUserForm("general", getModel()));
+				add(new UploadableProfileImagePanel("img", getUserId()));
+				add(new ComunityUserForm("comunity", getModel()));
+			}
+		};
+		add(form);
 	}
 }