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 2016/11/18 06:07:57 UTC

svn commit: r1770316 - in /openmeetings/application: branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ branches/3.1.x/openmeetings-we...

Author: solomax
Date: Fri Nov 18 06:07:57 2016
New Revision: 1770316

URL: http://svn.apache.org/viewvc?rev=1770316&view=rev
Log:
[OPENMEETINGS-1501] emails are now can be deleted

Modified:
    openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
    openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
    openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
    openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
    openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/admin.css
    openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css
    openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
    openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/admin.css
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
    openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/admin.css
    openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css

Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java Fri Nov 18 06:07:57 2016
@@ -35,12 +35,12 @@ import org.springframework.transaction.a
 public class MailMessageDao  implements IDataProviderDao<MailMessage> {
 	@PersistenceContext
 	private EntityManager em;
-	
+
 	@Override
 	public MailMessage get(long id) {
 		return get(Long.valueOf(id));
 	}
-	
+
 	@Override
 	public MailMessage get(Long id) {
 		return em.createNamedQuery("getMailMessageById", MailMessage.class).setParameter("id", id).getSingleResult();
@@ -56,7 +56,7 @@ public class MailMessageDao  implements
 		return em.createNamedQuery("getMailMessagesByStatus", MailMessage.class).setParameter("status", status)
 				.setFirstResult(start).setMaxResults(count).getResultList();
 	}
-	
+
 	private <T> TypedQuery<T> getQuery(boolean isCount, String search, String order, Class<T> clazz) {
 		StringBuilder sb = new StringBuilder("SELECT ");
 		sb.append(isCount ? "COUNT(m)" : "m")
@@ -73,7 +73,7 @@ public class MailMessageDao  implements
 		}
 		return q;
 	}
-	
+
 	@Override
 	public List<MailMessage> get(String search, int start, int count, String order) {
 		return getQuery(false, search, order, MailMessage.class).setFirstResult(start).setMaxResults(count).getResultList();
@@ -96,14 +96,14 @@ public class MailMessageDao  implements
 			.setParameter("date", date)
 			.executeUpdate();
 	}
-	
+
 	public void resetSendingStatus(Long id) {
 		em.createNamedQuery("resetMailStatusById")
 			.setParameter("noneStatus", Status.NONE)
 			.setParameter("id", id)
 			.executeUpdate();
 	}
-	
+
 	@Override
 	public MailMessage update(MailMessage m, Long userId) {
 		if (m.getId() == null) {
@@ -118,6 +118,14 @@ public class MailMessageDao  implements
 
 	@Override
 	public void delete(MailMessage m, Long userId) {
-		em.remove(m);
+		if (m != null) {
+			delete(m.getId(), userId);
+		}
+	}
+
+	public void delete(Long id, Long userId) {
+		if (id != null) {
+			em.remove(get(id));
+		}
 	}
 }

Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java Fri Nov 18 06:07:57 2016
@@ -48,27 +48,24 @@ public class MailMessage implements IDat
 	private static final long serialVersionUID = 1L;
 
 	public enum Status {
-		NONE
-		, SENDING
-		, ERROR
-		, DONE
+		NONE, SENDING, ERROR, DONE
 	}
-	
+
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name = "id")
 	private Long id;
-	
+
 	@Lob
 	@Column(name = "recipients")
 	private String recipients;
-	
+
 	@Column(name = "replyTo")
 	private String replyTo;
-	
+
 	@Column(name = "subject")
 	private String subject;
-	
+
 	@Lob
 	@Column(name = "body")
 	private String body;
@@ -83,13 +80,13 @@ public class MailMessage implements IDat
 
 	@Column(name = "inserted")
 	private Calendar inserted;
-	
+
 	@Column(name = "updated")
 	private Calendar updated;
-	
+
 	@Column(name = "error_count", nullable = false)
 	private int errorCount = 0;
-	
+
 	@Lob
 	@Column(name = "last_error")
 	private String lastError;

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java Fri Nov 18 06:07:57 2016
@@ -20,12 +20,14 @@ package org.apache.openmeetings.web.admi
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
 
 import java.util.Date;
 
 import org.apache.openmeetings.db.dao.basic.MailMessageDao;
 import org.apache.openmeetings.db.entity.basic.MailMessage;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.datetime.markup.html.basic.DateLabel;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -42,9 +44,12 @@ public class EmailForm extends Form<Mail
 	private final DateLabel updated;
 	private final Label status;
 	private final AjaxButton reset;
+	private ConfirmableAjaxBorder delBtn;
+	private final WebMarkupContainer list;
 
 	public EmailForm(String id, final WebMarkupContainer list, MailMessage m) {
 		super(id, new CompoundPropertyModel<>(m));
+		this.list = list;
 		add(status = new Label("status", Model.of("")));
 		add(new Label("subject"));
 		add(new Label("recipients"));
@@ -66,12 +71,34 @@ public class EmailForm extends Form<Mail
 	}
 
 	@Override
+	protected void onInitialize() {
+		super.onInitialize();
+		// add a cancel button that can be used to submit the form via ajax
+		delBtn = new ConfirmableAjaxBorder("ajax-cancel-button", getString("80"), getString("833"), this) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+			}
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				getBean(MailMessageDao.class).delete(getModelObject().getId(), getUserId());
+				setModelObject(new MailMessage());
+				target.add(list, EmailForm.this);
+			}
+		};
+		add(delBtn.setOutputMarkupId(true).setEnabled(false));
+	}
+
+	@Override
 	protected void onModelChanged() {
 		super.onModelChanged();
 		MailMessage m = getModelObject();
+		delBtn.setEnabled(m.getId() != null);
 		status.setDefaultModelObject(getString("admin.email.status." + m.getStatus().name()));
-		inserted.setModelObject(m.getInserted().getTime());
-		updated.setModelObject(m.getInserted().getTime());
+		inserted.setModelObject(m.getInserted() == null ? null : m.getInserted().getTime());
+		updated.setModelObject(m.getUpdated() == null ? null : m.getUpdated().getTime());
 		reset.setEnabled(m.getId() != null && MailMessage.Status.ERROR == m.getStatus());
 	}
 }

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html Fri Nov 18 06:07:57 2016
@@ -9,7 +9,7 @@
   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
@@ -46,6 +46,9 @@
 		</div>
 		<div class="adminPanelColumnForm">
 			<form wicket:id="form" class="adminForm">
+				<div class="formSaveBar ui-widget-header">
+					<div class="formCancelButton" wicket:id="ajax-cancel-button" wicket:message="title:157"></div>
+				</div>
 				<div class="scrollcontent" id="adminForm">
 					<fieldset class="ui-widget-content">
 						<legend class="ui-widget-header"><wicket:message key="admin.email.group.label" /></legend>

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/admin.css
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/admin.css?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/admin.css (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/admin.css Fri Nov 18 06:07:57 2016
@@ -277,6 +277,7 @@ table.adminListTable td div.four_column_
 	border: solid 1px #aacfe4;
 	width: 280px;
 	min-height: 20px;
+	white-space: initial;
 }
 .adminForm input {
 	border: solid 1px #aacfe4;

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css Fri Nov 18 06:07:57 2016
@@ -19,7 +19,6 @@
  
  /**** FIXME TODO need to be unified with other icons used ****/
 div.formSaveBar {
-	width: 100%;
 	height: 22px;
 }
 .addButton, .delButton {

Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java Fri Nov 18 06:07:57 2016
@@ -35,12 +35,12 @@ import org.springframework.transaction.a
 public class MailMessageDao  implements IDataProviderDao<MailMessage> {
 	@PersistenceContext
 	private EntityManager em;
-	
+
 	@Override
 	public MailMessage get(long id) {
 		return get(Long.valueOf(id));
 	}
-	
+
 	@Override
 	public MailMessage get(Long id) {
 		return em.createNamedQuery("getMailMessageById", MailMessage.class).setParameter("id", id).getSingleResult();
@@ -56,7 +56,7 @@ public class MailMessageDao  implements
 		return em.createNamedQuery("getMailMessagesByStatus", MailMessage.class).setParameter("status", status)
 				.setFirstResult(start).setMaxResults(count).getResultList();
 	}
-	
+
 	private <T> TypedQuery<T> getQuery(boolean isCount, String search, String order, Class<T> clazz) {
 		StringBuilder sb = new StringBuilder("SELECT ");
 		sb.append(isCount ? "COUNT(m)" : "m")
@@ -73,7 +73,7 @@ public class MailMessageDao  implements
 		}
 		return q;
 	}
-	
+
 	@Override
 	public List<MailMessage> get(String search, int start, int count, String order) {
 		return getQuery(false, search, order, MailMessage.class).setFirstResult(start).setMaxResults(count).getResultList();
@@ -96,14 +96,14 @@ public class MailMessageDao  implements
 			.setParameter("date", date)
 			.executeUpdate();
 	}
-	
+
 	public void resetSendingStatus(Long id) {
 		em.createNamedQuery("resetMailStatusById")
 			.setParameter("noneStatus", Status.NONE)
 			.setParameter("id", id)
 			.executeUpdate();
 	}
-	
+
 	@Override
 	public MailMessage update(MailMessage m, Long userId) {
 		if (m.getId() == null) {
@@ -118,6 +118,14 @@ public class MailMessageDao  implements
 
 	@Override
 	public void delete(MailMessage m, Long userId) {
-		em.remove(m);
+		if (m != null) {
+			delete(m.getId(), userId);
+		}
+	}
+
+	public void delete(Long id, Long userId) {
+		if (id != null) {
+			em.remove(get(id));
+		}
 	}
 }

Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java Fri Nov 18 06:07:57 2016
@@ -48,27 +48,24 @@ public class MailMessage implements IDat
 	private static final long serialVersionUID = 1L;
 
 	public enum Status {
-		NONE
-		, SENDING
-		, ERROR
-		, DONE
+		NONE, SENDING, ERROR, DONE
 	}
-	
+
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name = "id")
 	private Long id;
-	
+
 	@Lob
 	@Column(name = "recipients")
 	private String recipients;
-	
+
 	@Column(name = "replyTo")
 	private String replyTo;
-	
+
 	@Column(name = "subject")
 	private String subject;
-	
+
 	@Lob
 	@Column(name = "body")
 	private String body;
@@ -83,13 +80,13 @@ public class MailMessage implements IDat
 
 	@Column(name = "inserted")
 	private Calendar inserted;
-	
+
 	@Column(name = "updated")
 	private Calendar updated;
-	
+
 	@Column(name = "error_count", nullable = false)
 	private int errorCount = 0;
-	
+
 	@Lob
 	@Column(name = "last_error")
 	private String lastError;

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java Fri Nov 18 06:07:57 2016
@@ -20,12 +20,14 @@ package org.apache.openmeetings.web.admi
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
 
 import java.util.Date;
 
 import org.apache.openmeetings.db.dao.basic.MailMessageDao;
 import org.apache.openmeetings.db.entity.basic.MailMessage;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.datetime.markup.html.basic.DateLabel;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -42,9 +44,12 @@ public class EmailForm extends Form<Mail
 	private final DateLabel updated;
 	private final Label status;
 	private final AjaxButton reset;
+	private ConfirmableAjaxBorder delBtn;
+	private final WebMarkupContainer list;
 
 	public EmailForm(String id, final WebMarkupContainer list, MailMessage m) {
 		super(id, new CompoundPropertyModel<>(m));
+		this.list = list;
 		add(status = new Label("status", Model.of("")));
 		add(new Label("subject"));
 		add(new Label("recipients"));
@@ -66,12 +71,34 @@ public class EmailForm extends Form<Mail
 	}
 
 	@Override
+	protected void onInitialize() {
+		super.onInitialize();
+		// add a cancel button that can be used to submit the form via ajax
+		delBtn = new ConfirmableAjaxBorder("ajax-cancel-button", getString("80"), getString("833"), this) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+			}
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				getBean(MailMessageDao.class).delete(getModelObject().getId(), getUserId());
+				setModelObject(new MailMessage());
+				target.add(list, EmailForm.this);
+			}
+		};
+		add(delBtn.setOutputMarkupId(true).setEnabled(false));
+	}
+
+	@Override
 	protected void onModelChanged() {
 		super.onModelChanged();
 		MailMessage m = getModelObject();
+		delBtn.setEnabled(m.getId() != null);
 		status.setDefaultModelObject(getString("admin.email.status." + m.getStatus().name()));
-		inserted.setModelObject(m.getInserted().getTime());
-		updated.setModelObject(m.getInserted().getTime());
+		inserted.setModelObject(m.getInserted() == null ? null : m.getInserted().getTime());
+		updated.setModelObject(m.getUpdated() == null ? null : m.getUpdated().getTime());
 		reset.setEnabled(m.getId() != null && MailMessage.Status.ERROR == m.getStatus());
 	}
 }

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html Fri Nov 18 06:07:57 2016
@@ -9,7 +9,7 @@
   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
@@ -46,6 +46,9 @@
 		</div>
 		<div class="adminPanelColumnForm">
 			<form wicket:id="form" class="adminForm">
+				<div class="formSaveBar ui-widget-header">
+					<div class="formCancelButton" wicket:id="ajax-cancel-button" wicket:message="title:157"></div>
+				</div>
 				<div class="scrollcontent" id="adminForm">
 					<fieldset class="ui-widget-content">
 						<legend class="ui-widget-header"><wicket:message key="admin.email.group.label" /></legend>

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/admin.css
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/admin.css?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/admin.css (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/admin.css Fri Nov 18 06:07:57 2016
@@ -277,6 +277,7 @@ table.adminListTable td div.four_column_
 	border: solid 1px #aacfe4;
 	width: 280px;
 	min-height: 20px;
+	white-space: initial;
 }
 .adminForm input {
 	border: solid 1px #aacfe4;

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css Fri Nov 18 06:07:57 2016
@@ -19,7 +19,6 @@
  
  /**** FIXME TODO need to be unified with other icons used ****/
 div.formSaveBar {
-	width: 100%;
 	height: 22px;
 }
 .addButton, .delButton {

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java Fri Nov 18 06:07:57 2016
@@ -35,12 +35,12 @@ import org.springframework.transaction.a
 public class MailMessageDao  implements IDataProviderDao<MailMessage> {
 	@PersistenceContext
 	private EntityManager em;
-	
+
 	@Override
 	public MailMessage get(long id) {
 		return get(Long.valueOf(id));
 	}
-	
+
 	@Override
 	public MailMessage get(Long id) {
 		return em.createNamedQuery("getMailMessageById", MailMessage.class).setParameter("id", id).getSingleResult();
@@ -56,7 +56,7 @@ public class MailMessageDao  implements
 		return em.createNamedQuery("getMailMessagesByStatus", MailMessage.class).setParameter("status", status)
 				.setFirstResult(start).setMaxResults(count).getResultList();
 	}
-	
+
 	private <T> TypedQuery<T> getQuery(boolean isCount, String search, String order, Class<T> clazz) {
 		StringBuilder sb = new StringBuilder("SELECT ");
 		sb.append(isCount ? "COUNT(m)" : "m")
@@ -73,7 +73,7 @@ public class MailMessageDao  implements
 		}
 		return q;
 	}
-	
+
 	@Override
 	public List<MailMessage> get(String search, int start, int count, String order) {
 		return getQuery(false, search, order, MailMessage.class).setFirstResult(start).setMaxResults(count).getResultList();
@@ -96,14 +96,14 @@ public class MailMessageDao  implements
 			.setParameter("date", date)
 			.executeUpdate();
 	}
-	
+
 	public void resetSendingStatus(Long id) {
 		em.createNamedQuery("resetMailStatusById")
 			.setParameter("noneStatus", Status.NONE)
 			.setParameter("id", id)
 			.executeUpdate();
 	}
-	
+
 	@Override
 	public MailMessage update(MailMessage m, Long userId) {
 		if (m.getId() == null) {
@@ -118,6 +118,14 @@ public class MailMessageDao  implements
 
 	@Override
 	public void delete(MailMessage m, Long userId) {
-		em.remove(m);
+		if (m != null) {
+			delete(m.getId(), userId);
+		}
+	}
+
+	public void delete(Long id, Long userId) {
+		if (id != null) {
+			em.remove(get(id));
+		}
 	}
 }

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java Fri Nov 18 06:07:57 2016
@@ -48,27 +48,24 @@ public class MailMessage implements IDat
 	private static final long serialVersionUID = 1L;
 
 	public enum Status {
-		NONE
-		, SENDING
-		, ERROR
-		, DONE
+		NONE, SENDING, ERROR, DONE
 	}
-	
+
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name = "id")
 	private Long id;
-	
+
 	@Lob
 	@Column(name = "recipients")
 	private String recipients;
-	
+
 	@Column(name = "replyTo")
 	private String replyTo;
-	
+
 	@Column(name = "subject")
 	private String subject;
-	
+
 	@Lob
 	@Column(name = "body")
 	private String body;
@@ -83,13 +80,13 @@ public class MailMessage implements IDat
 
 	@Column(name = "inserted")
 	private Calendar inserted;
-	
+
 	@Column(name = "updated")
 	private Calendar updated;
-	
+
 	@Column(name = "error_count", nullable = false)
 	private int errorCount = 0;
-	
+
 	@Lob
 	@Column(name = "last_error")
 	private String lastError;

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java Fri Nov 18 06:07:57 2016
@@ -20,12 +20,14 @@ package org.apache.openmeetings.web.admi
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
 
 import java.util.Date;
 
 import org.apache.openmeetings.db.dao.basic.MailMessageDao;
 import org.apache.openmeetings.db.entity.basic.MailMessage;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.datetime.markup.html.basic.DateLabel;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -42,9 +44,12 @@ public class EmailForm extends Form<Mail
 	private final DateLabel updated;
 	private final Label status;
 	private final AjaxButton reset;
+	private ConfirmableAjaxBorder delBtn;
+	private final WebMarkupContainer list;
 
 	public EmailForm(String id, final WebMarkupContainer list, MailMessage m) {
 		super(id, new CompoundPropertyModel<>(m));
+		this.list = list;
 		add(status = new Label("status", Model.of("")));
 		add(new Label("subject"));
 		add(new Label("recipients"));
@@ -66,12 +71,34 @@ public class EmailForm extends Form<Mail
 	}
 
 	@Override
+	protected void onInitialize() {
+		super.onInitialize();
+		// add a cancel button that can be used to submit the form via ajax
+		delBtn = new ConfirmableAjaxBorder("ajax-cancel-button", getString("80"), getString("833"), this) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+			}
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				getBean(MailMessageDao.class).delete(getModelObject().getId(), getUserId());
+				setModelObject(new MailMessage());
+				target.add(list, EmailForm.this);
+			}
+		};
+		add(delBtn.setOutputMarkupId(true).setEnabled(false));
+	}
+
+	@Override
 	protected void onModelChanged() {
 		super.onModelChanged();
 		MailMessage m = getModelObject();
+		delBtn.setEnabled(m.getId() != null);
 		status.setDefaultModelObject(getString("admin.email.status." + m.getStatus().name()));
-		inserted.setModelObject(m.getInserted().getTime());
-		updated.setModelObject(m.getInserted().getTime());
+		inserted.setModelObject(m.getInserted() == null ? null : m.getInserted().getTime());
+		updated.setModelObject(m.getUpdated() == null ? null : m.getUpdated().getTime());
 		reset.setEnabled(m.getId() != null && MailMessage.Status.ERROR == m.getStatus());
 	}
 }

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html Fri Nov 18 06:07:57 2016
@@ -9,7 +9,7 @@
   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
@@ -46,6 +46,9 @@
 		</div>
 		<div class="adminPanelColumnForm">
 			<form wicket:id="form" class="adminForm">
+				<div class="formSaveBar ui-widget-header">
+					<div class="formCancelButton" wicket:id="ajax-cancel-button" wicket:message="title:157"></div>
+				</div>
 				<div class="scrollcontent" id="adminForm">
 					<fieldset class="ui-widget-content">
 						<legend class="ui-widget-header"><wicket:message key="admin.email.group.label" /></legend>

Modified: openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/admin.css
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/admin.css?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/admin.css (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/admin.css Fri Nov 18 06:07:57 2016
@@ -277,6 +277,7 @@ table.adminListTable td div.four_column_
 	border: solid 1px #aacfe4;
 	width: 280px;
 	min-height: 20px;
+	white-space: initial;
 }
 .adminForm input {
 	border: solid 1px #aacfe4;

Modified: openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css?rev=1770316&r1=1770315&r2=1770316&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css Fri Nov 18 06:07:57 2016
@@ -19,7 +19,6 @@
  
  /**** FIXME TODO need to be unified with other icons used ****/
 div.formSaveBar {
-	width: 100%;
 	height: 22px;
 }
 .addButton, .delButton {