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 2018/04/15 13:51:09 UTC

[openmeetings] 01/02: [OPENMEETINGS-1864] restore is implemented

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch OPENMEETINGS-1864-privacy
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit f26d68f2db3424c8eee162f998042cb6bb91e9d5
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Apr 15 20:49:08 2018 +0700

    [OPENMEETINGS-1864] restore is implemented
---
 .../openmeetings/web/admin/AdminBaseForm.java      | 58 +++++++++-----------
 .../openmeetings/web/admin/AdminSavePanel.html     |  8 +--
 .../openmeetings/web/admin/AdminSavePanel.java     | 63 +++++++++++++++++++---
 .../openmeetings/web/admin/groups/GroupForm.java   | 11 ++--
 .../openmeetings/web/admin/labels/LangPanel.html   | 46 ++++++++--------
 .../openmeetings/web/admin/users/UserForm.java     | 11 +++-
 .../web/app/Application.properties.xml             |  2 +
 .../web/common/FormSaveRefreshPanel.java           | 17 ++----
 openmeetings-web/src/main/webapp/css/general.css   | 11 ----
 9 files changed, 128 insertions(+), 99 deletions(-)

diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
index c6f300c..9fb1dc2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
@@ -51,8 +51,8 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 			}
 
 			@Override
-			protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
-				AdminBaseForm.this.onSaveError(target, form);
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onError(target, form);
 			}
 
 			@Override
@@ -61,28 +61,23 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 			}
 
 			@Override
-			protected void onNewError(AjaxRequestTarget target, Form<?> form) {
-				AdminBaseForm.this.onNewError(target, form);
-			}
-
-			@Override
 			protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
 				AdminBaseForm.this.onRefreshSubmit(target, form);
 			}
 
 			@Override
-			protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
-				AdminBaseForm.this.onRefreshError(target, form);
+			protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onDeleteSubmit(target, form);
 			}
 
 			@Override
-			protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
-				AdminBaseForm.this.onDeleteSubmit(target, form);
+			protected void onPurgeSubmit(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onPurgeSubmit(target, form);
 			}
 
 			@Override
-			protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
-				AdminBaseForm.this.onDeleteError(target, form);
+			protected void onRestoreSubmit(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onRestoreSubmit(target, form);
 			}
 		};
 		add(savePanel);
@@ -109,9 +104,14 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 		savePanel.setSaveVisible(visible);
 	}
 
-	protected boolean isDelBtnVisible() {
-		return true;
+	public void setPurgeVisible(boolean visible) {
+		savePanel.setPurgeVisible(visible);
 	}
+
+	public void setRestoreVisible(boolean visible) {
+		savePanel.setRestoreVisible(visible);
+	}
+
 	/**
 	 * invoked when user press save button
 	 *
@@ -126,7 +126,7 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 	 * @param target - ajax target to update form component
 	 * @param form - Form being processed
 	 */
-	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+	protected void onError(AjaxRequestTarget target, Form<?> form) {
 		//no-op
 	}
 
@@ -139,16 +139,6 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 	protected abstract void onNewSubmit(AjaxRequestTarget target, Form<?> form);
 
 	/**
-	 * invoked if new has error
-	 *
-	 * @param target - ajax target to update form component
-	 * @param form - Form being processed
-	 */
-	protected void onNewError(AjaxRequestTarget target, Form<?> form) {
-		//no-op
-	}
-
-	/**
 	 * invoked when refresh button is pressed
 	 *
 	 * @param target - ajax target to update form component
@@ -157,30 +147,30 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 	protected abstract void onRefreshSubmit(AjaxRequestTarget target, Form<?> form);
 
 	/**
-	 * invoked when refresh has error
+	 * invoked when delete button is pressed
 	 *
 	 * @param target - ajax target to update form component
 	 * @param form - Form being processed
 	 */
-	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
-		//no-op
-	}
+	protected abstract void onDeleteSubmit(AjaxRequestTarget target, Form<?> form);
 
 	/**
-	 * invoked when delete button is pressed
+	 * invoked when purge button is pressed
 	 *
 	 * @param target - ajax target to update form component
 	 * @param form - Form being processed
 	 */
-	protected abstract void onDeleteSubmit(AjaxRequestTarget target, Form<?> form);
+	protected void onPurgeSubmit(AjaxRequestTarget target, Form<?> form) {
+		//no-op
+	}
 
 	/**
-	 * invoked when delete has error
+	 * invoked when restore button is pressed
 	 *
 	 * @param target - ajax target to update form component
 	 * @param form - Form being processed
 	 */
-	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+	protected void onRestoreSubmit(AjaxRequestTarget target, Form<?> form) {
 		//no-op
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminSavePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminSavePanel.html
index 6f79aca..a930582 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminSavePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminSavePanel.html
@@ -20,16 +20,16 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 	<wicket:extend>
-		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only" wicket:id="ajax-new-button" wicket:message="title:155">
+		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only" wicket:id="btn-new" wicket:message="title:155">
 			<span class="ui-button-icon ui-icon ui-icon-plusthick"></span>&nbsp;
 		</div>
-		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-highlight" wicket:id="ajax-cancel-button" wicket:message="title:157">
+		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-highlight" wicket:id="btn-delete" wicket:message="title:157">
 			<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
 		</div>
-		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error">
+		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="btn-purge" wicket:message="title:admin.purge">
 			<span class="ui-button-icon ui-icon ui-icon-trash"></span>&nbsp;
 		</div>
-		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only">
+		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only" wicket:id="btn-restore" wicket:message="title:admin.restore">
 			<span class="ui-button-icon ui-icon ui-icon-circle-check"></span>&nbsp;
 		</div>
 		<span wicket:id="newRecord"></span>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminSavePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminSavePanel.java
index 867a06c..21eaf7e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminSavePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminSavePanel.java
@@ -31,6 +31,8 @@ public abstract class AdminSavePanel<T> extends FormSaveRefreshPanel<T> {
 	private final Label newRecord = new Label("newRecord", Model.of(""));
 	private final Form<T> form;
 	private ConfirmableAjaxBorder delBtn;
+	private AjaxButton purgeBtn;
+	private AjaxButton restoreBtn;
 
 	public AdminSavePanel(String id, final Form<T> form) {
 		super(id, form);
@@ -42,7 +44,7 @@ public abstract class AdminSavePanel<T> extends FormSaveRefreshPanel<T> {
 		newRecord.setDefaultModelObject(getString("155"));
 		add(newRecord.setVisible(false).setOutputMarkupId(true));
 
-		final AjaxButton newBtn = new AjaxButton("ajax-new-button", form) {
+		final AjaxButton newBtn = new AjaxButton("btn-new", form) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
@@ -58,14 +60,14 @@ public abstract class AdminSavePanel<T> extends FormSaveRefreshPanel<T> {
 			protected void onError(AjaxRequestTarget target) {
 				// repaint the feedback panel so errors are shown
 				target.add(feedback);
-				onNewError(target, form);
+				AdminSavePanel.this.onError(target, form);
 			}
 		};
 		// add a cancel button that can be used to submit the form via ajax
 		final Form<?> cForm = new Form<>("form");
 		cForm.setMultiPart(form.isMultiPart());
 		add(cForm);
-		delBtn = new ConfirmableAjaxBorder("ajax-cancel-button", getString("80"), getString("833"), cForm) {
+		delBtn = new ConfirmableAjaxBorder("btn-delete", getString("80"), getString("833"), cForm) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
@@ -73,7 +75,7 @@ public abstract class AdminSavePanel<T> extends FormSaveRefreshPanel<T> {
 				// repaint the feedback panel so errors are shown
 				target.add(feedback);
 				setNewVisible(false);
-				onDeleteError(target, form);
+				AdminSavePanel.this.onError(target, form);
 			}
 
 			@Override
@@ -84,7 +86,45 @@ public abstract class AdminSavePanel<T> extends FormSaveRefreshPanel<T> {
 				onDeleteSubmit(target, form);
 			}
 		};
-		add(newBtn, delBtn);
+		purgeBtn = new AjaxButton("btn-purge", form) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				setNewVisible(false);
+				onPurgeSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				AdminSavePanel.this.onError(target, form);
+			}
+		};
+		restoreBtn = new AjaxButton("btn-restore", form) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				setNewVisible(false);
+				onRestoreSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				AdminSavePanel.this.onError(target, form);
+			}
+		};
+		add(newBtn, delBtn
+				, purgeBtn.setOutputMarkupPlaceholderTag(true).setVisible(false)
+				, restoreBtn.setOutputMarkupPlaceholderTag(true).setVisible(false));
 		super.onInitialize();
 	}
 
@@ -97,9 +137,16 @@ public abstract class AdminSavePanel<T> extends FormSaveRefreshPanel<T> {
 		delBtn.setVisible(visible);
 	}
 
-	protected abstract void onNewSubmit(AjaxRequestTarget target, Form<?> form);
-	protected abstract void onNewError(AjaxRequestTarget target, Form<?> form);
+	public void setPurgeVisible(boolean visible) {
+		purgeBtn.setVisible(visible);
+	}
+
+	public void setRestoreVisible(boolean visible) {
+		restoreBtn.setVisible(visible);
+	}
 
+	protected abstract void onNewSubmit(AjaxRequestTarget target, Form<?> form);
 	protected abstract void onDeleteSubmit(AjaxRequestTarget target, Form<?> form);
-	protected abstract void onDeleteError(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onPurgeSubmit(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onRestoreSubmit(AjaxRequestTarget target, Form<?> form);
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
index 6ad8fd4..e0c6ae8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -131,11 +131,6 @@ public class GroupForm extends AdminBaseForm<Group> {
 	}
 
 	@Override
-	protected boolean isDelBtnVisible() {
-		return !hasGroupAdminLevel(getRights());
-	}
-
-	@Override
 	protected void onInitialize() {
 		super.onInitialize();
 		final boolean isGroupAdmin = hasGroupAdminLevel(getRights());
@@ -166,6 +161,12 @@ public class GroupForm extends AdminBaseForm<Group> {
 		add(reminderDays.setLabel(Model.of(getString("admin.group.form.reminderDays"))).setEnabled(false).setOutputMarkupId(true));
 	}
 
+	@Override
+	protected void onConfigure() {
+		super.onConfigure();
+		setDelVisible(!hasGroupAdminLevel(getRights()));
+	}
+
 	public void updateView(AjaxRequestTarget target) {
 		userToadd.setModelObject(null);
 		usersPanel.update(getGroupId());
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
index 78af381..ec40691 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
@@ -34,28 +34,30 @@
 	<div wicket:id="feedback"></div>
 	<div class="adminPanelColumnTable">
 		<div>
-		<div wicket:id="addLangBtn" class="addButton" wicket:message="title:362" ></div>
-		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="deleteLangBtn" wicket:message="title:363">
-			<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
-		</div>
-		<form wicket:id="langForm" class="addLanguagePanel">
-			<table>
-				<tr>
-					<td>
-						<select wicket:id="language"></select>
-					</td>
-					<td>
-						<span wicket:id="export" class="btn"><wicket:message key="360"/></span>
-					</td>
-					<td>
-						<div class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0;">
-							<span class="btn btn-file ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"><span class="ui-button-text"><wicket:message key="387"/></span><input type="file" accept="text/xml" wicket:id="fileInput"/></span>
-						</div>
-						<span wicket:id="progress">[progressbar]</span>
-					</td>
-				</tr>
-			</table>
-		</form>
+			<div class="ui-button ui-widget ui-corner-all ui-button-icon-only" style="margin-top: -1.5em;" wicket:id="addLangBtn" wicket:message="title:362">
+				<span class="ui-button-icon ui-icon ui-icon-plusthick"></span>&nbsp;
+			</div>
+			<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" style="margin-top: -1.5em;" wicket:id="deleteLangBtn" wicket:message="title:363">
+				<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
+			</div>
+			<form wicket:id="langForm" class="addLanguagePanel">
+				<table>
+					<tr>
+						<td>
+							<select wicket:id="language"></select>
+						</td>
+						<td>
+							<span wicket:id="export" class="btn"><wicket:message key="360"/></span>
+						</td>
+						<td>
+							<div class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0;">
+								<span class="btn btn-file ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"><span class="ui-button-text"><wicket:message key="387"/></span><input type="file" accept="text/xml" wicket:id="fileInput"/></span>
+							</div>
+							<span wicket:id="progress">[progressbar]</span>
+						</td>
+					</tr>
+				</table>
+			</form>
 		</div>
 		<span wicket:id="navigator">[dataview navigator]</span>
 		<table class="adminListTable">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index b450e01..7bee061 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -173,15 +173,24 @@ public class UserForm extends AdminBaseForm<User> {
 	protected void onModelChanged() {
 		super.onModelChanged();
 		boolean nd = !getModelObject().isDeleted();
+		boolean isNew = getModelObject().getId() == null;
 		mainContainer.setEnabled(nd);
 		setSaveVisible(nd);
-		setDelVisible(nd && getModelObject().getId() != null);
+		setDelVisible(nd && !isNew);
+		setRestoreVisible(!nd);
+		setPurgeVisible(!isNew);
 		password.setModelObject(null);
 		generalForm.updateModelObject(getModelObject(), true);
 		passValidator.setUser(getModelObject());
 	}
 
 	@Override
+	protected void onRestoreSubmit(AjaxRequestTarget target, Form<?> form) {
+		getModelObject().setDeleted(false);
+		onSaveSubmit(target, form);
+	}
+
+	@Override
 	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
 		if (isAdminPassRequired()) {
 			adminPass.setAction((SerializableConsumer<AjaxRequestTarget>)t -> saveUser(t, password.getModelObject()));
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
index 07b2a68..56bfff2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
@@ -1009,4 +1009,6 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="menu.polls"><![CDATA[Polls]]></entry>
 	<entry key="menu.polls.quick.title"><![CDATA[Create Quick Poll]]></entry>
 	<entry key="menu.polls.quick.descr"><![CDATA[Gather feedback without creating a poll]]></entry>
+	<entry key="admin.restore"><![CDATA[Restore]]></entry>
+	<entry key="admin.purge"><![CDATA[Purge]]></entry>
 </properties>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.java
index 1719e41..cca36cf 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.java
@@ -57,7 +57,7 @@ public abstract class FormSaveRefreshPanel<T> extends Panel {
 			protected void onError(AjaxRequestTarget target) {
 				// repaint the feedback panel so errors are shown
 				target.add(feedback);
-				onSaveError(target, form);
+				FormSaveRefreshPanel.this.onError(target, form);
 			}
 		});
 
@@ -78,7 +78,7 @@ public abstract class FormSaveRefreshPanel<T> extends Panel {
 				// repaint the feedback panel so errors are shown
 				target.add(feedback);
 				setNewVisible(false);
-				onRefreshError(target, form);
+				FormSaveRefreshPanel.this.onError(target, form);
 			}
 		});
 		super.onInitialize();
@@ -105,20 +105,9 @@ public abstract class FormSaveRefreshPanel<T> extends Panel {
 	 * @param target Ajax target
 	 * @param form form object
 	 */
-	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+	protected void onError(AjaxRequestTarget target, Form<?> form) {
 		//no-op
 	}
 
 	protected abstract void onRefreshSubmit(AjaxRequestTarget target, Form<?> form);
-
-
-	/**
-	 * Refresh error handler
-	 *
-	 * @param target Ajax target
-	 * @param form form object
-	 */
-	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
-		//no-op
-	}
 }
diff --git a/openmeetings-web/src/main/webapp/css/general.css b/openmeetings-web/src/main/webapp/css/general.css
index 5db2a9a..70aeeb3 100644
--- a/openmeetings-web/src/main/webapp/css/general.css
+++ b/openmeetings-web/src/main/webapp/css/general.css
@@ -568,17 +568,6 @@ form .input {
 div.formSaveBar {
 	height: 35px;
 }
-.addButton {
-	display: inline-block;
-	cursor: pointer;
-	width: 18px;
-	height: 18px;
-	border: none;
-	margin-left: 2px;
-	margin-top: 2px;
-	vertical-align: super;
-	background: url(images/plus_icon.png) no-repeat;
-}
 .hash-panel-main {
 	width: 100%;
 	height: 100%;

-- 
To stop receiving notification emails like this one, please contact
solomax@apache.org.