Skip to content

Commit

Permalink
MID-9661: adding check option for removing data on confirm popup of s…
Browse files Browse the repository at this point in the history
…hadow removing
  • Loading branch information
skublik committed Apr 29, 2024
1 parent 8d0dca6 commit e83b3b2
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,11 @@ protected QName getDefaultObjectClass() {
private void createShadowTable() {
ShadowTablePanel shadowTablePanel = new ShadowTablePanel(ID_TABLE, getPanelConfiguration()) {

@Override
protected boolean isDeleteOnlyRepoShadowAllow() {
return false;
}

@Override
protected UserProfileStorage.TableId getTableId() {
return UserProfileStorage.TableId.PAGE_RESOURCE_OBJECT_CLASS_PANEL;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<!--
~ Copyright (c) 2010-2020 Evolveum
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->

<wicket:panel xmlns:wicket="http://wicket.apache.org">
<div class="d-flex flex-column">
<p class="text-center" wicket:id="confirmText"/>
<div class="col-12">
<div class="card p-4 mb-2" wicket:id="deleteResourceData"/>
</div>
</div>

<wicket:fragment wicket:id="buttons">
<div class="d-flex flex-wrap gap-2 w-100">
<a class="btn btn-primary" wicket:id="yes"/>
<a class="btn btn-default" wicket:id="no"/>
</div>
</wicket:fragment>
</wicket:panel>
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright (c) 2010-2021 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.web.component.dialog;

import com.evolveum.midpoint.gui.api.component.form.ToggleCheckBoxPanel;
import com.evolveum.midpoint.gui.api.page.PageAdminLTE;
import com.evolveum.midpoint.gui.api.page.PageBase;

import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;

public class DeleteShadowConfirmationPanel extends ConfirmationPanel {

public DeleteShadowConfirmationPanel(String id) {
super(id);
}

public DeleteShadowConfirmationPanel(String id, IModel<String> message) {
super(id, message);
}

private static final String ID_DELETE_RESOURCE_DATA = "deleteResourceData";

private IModel<Boolean> deleteResourceData = Model.of(false);
@Override
public StringResourceModel getTitle() {
return ((PageBase)getPage()).createStringResource("AssignmentTablePanel.modal.title.confirmDeletion");
}

@Override
protected void onInitialize() {
super.onInitialize();
iniLayout();
}

private void iniLayout() {
ToggleCheckBoxPanel simulationPanel = new ToggleCheckBoxPanel(ID_DELETE_RESOURCE_DATA,
deleteResourceData,
createStringResource("DeleteShadowConfirmationPanel.deleteResourceData.label"),
createStringResource("DeleteShadowConfirmationPanel.deleteResourceData.tooltip"));
simulationPanel.setOutputMarkupId(true);
add(simulationPanel);
}

protected final boolean isDeletedResourceData(){
return deleteResourceData.getObject();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.data.column.*;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
import com.evolveum.midpoint.web.component.dialog.DeleteConfirmationPanel;
import com.evolveum.midpoint.web.component.dialog.DeleteShadowConfirmationPanel;
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
Expand Down Expand Up @@ -746,24 +746,43 @@ private void deleteResourceObjectPerformed(IModel<SelectableBean<ShadowType>> se
return;
}

ConfirmationPanel dialog = new DeleteConfirmationPanel(
((PageBase) getPage()).getMainPopupBodyId(), createDeleteConfirmString(selectedShadows)) {
@Override
public void yesPerformed(AjaxRequestTarget target) {
deleteAccountsConfirmedPerformed(target, selectedShadows, result);
}
};
ConfirmationPanel dialog;

if (isDeleteOnlyRepoShadowAllow()) {
dialog = new DeleteShadowConfirmationPanel(
((PageBase) getPage()).getMainPopupBodyId(), createDeleteConfirmString(selectedShadows)) {
@Override
public void yesPerformed(AjaxRequestTarget target) {
ModelExecuteOptions options = createModelExecuteOptions();
if (options == null && !isDeletedResourceData()) {
options = getPageBase().executeOptions().raw();
}
deleteAccountsConfirmedPerformed(target, selectedShadows, options, result);
}
};
} else {
dialog = new ConfirmationPanel(
((PageBase) getPage()).getMainPopupBodyId(), createDeleteConfirmString(selectedShadows)) {
@Override
public void yesPerformed(AjaxRequestTarget target) {
deleteAccountsConfirmedPerformed(target, selectedShadows, createModelExecuteOptions(), result);
}
};
}
getPageBase().showMainPopup(dialog, target);

}

protected boolean isDeleteOnlyRepoShadowAllow() {
return true;
}

private void deleteAccountsConfirmedPerformed(
AjaxRequestTarget target, List<SelectableBean<ShadowType>> selected, OperationResult parentResult) {
AjaxRequestTarget target, List<SelectableBean<ShadowType>> selected, ModelExecuteOptions options, OperationResult parentResult) {
Task task = getPageBase().createSimpleTask(OPERATION_DELETE_OBJECTS); // created here because of serializability issues

for (SelectableBean<ShadowType> shadowBean : selected) {
ShadowType shadow = shadowBean.getValue();
ModelExecuteOptions options = createModelExecuteOptions();
var result = parentResult.subresult(OPERATION_DELETE_OBJECT)
.addArbitraryObjectAsParam("object", shadow)
.build();
Expand Down

0 comments on commit e83b3b2

Please sign in to comment.