Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/shadow-meta…
Browse files Browse the repository at this point in the history
…data
  • Loading branch information
1azyman committed Jun 6, 2023
2 parents bae3de7 + a9dddda commit af02704
Show file tree
Hide file tree
Showing 46 changed files with 289 additions and 211 deletions.
4 changes: 4 additions & 0 deletions gui/admin-gui/src/frontend/scss/midpoint.scss
Original file line number Diff line number Diff line change
Expand Up @@ -1694,6 +1694,10 @@ span.yui-skin-sam {
font-weight: bold;
}

.register-box {
width: 600px !important;
}

.info-box.activity-item-processing > .info-box-content > .progress-description {
overflow-wrap: break-word;
word-break: break-word;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -880,7 +880,7 @@ private void removeAllAfterBreadcrumb(Breadcrumb breadcrumb) {
}
}

protected void removeLastBreadcrumb() {
public void removeLastBreadcrumb() {
List<Breadcrumb> breadcrumbs = getBreadcrumbs();
if (canRedirectBack(DEFAULT_BREADCRUMB_STEP)) {
Breadcrumb breadcrumb = breadcrumbs.get(breadcrumbs.size() - DEFAULT_BREADCRUMB_STEP);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,20 @@

import com.evolveum.midpoint.authentication.api.util.AuthUtil;

import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanel;
import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettings;
import com.evolveum.midpoint.gui.impl.prism.panel.vertical.form.VerticalFormPasswordPropertyPanel;
import com.evolveum.midpoint.gui.impl.prism.panel.vertical.form.VerticalFormPrismPropertyPanel;
import com.evolveum.midpoint.gui.impl.prism.panel.vertical.form.VerticalFormPrismReferencePanel;
import com.evolveum.midpoint.gui.impl.prism.wrapper.ProtectedStringTypeWrapperImpl;
import com.evolveum.midpoint.schema.processor.*;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.util.ExpressionUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand All @@ -36,6 +45,8 @@
import com.evolveum.midpoint.web.component.prism.ValueStatus;
import com.evolveum.midpoint.web.security.MidPointApplication;

import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -412,4 +423,19 @@ public static List<ResourceAttributeDefinition> searchAttributeDefinitions(
}
return allAttributes;
}

public static ItemPanel createVerticalPropertyPanel(String id, IModel<? extends ItemWrapper<?, ?>> model, ItemPanelSettings origSettings) {
ItemPanel propertyPanel;
ItemPanelSettings settings = origSettings != null ? origSettings.copy() : null;
if (model.getObject() instanceof ProtectedStringTypeWrapperImpl) {
propertyPanel = new VerticalFormPasswordPropertyPanel(
id, (IModel<PrismPropertyWrapper<ProtectedStringType>>) model, settings);
} else if (model.getObject() instanceof PrismPropertyWrapper) {
propertyPanel = new VerticalFormPrismPropertyPanel(id, model, settings);
} else {
propertyPanel = new VerticalFormPrismReferencePanel(id, model, settings);
}
propertyPanel.setOutputMarkupId(true);
return propertyPanel;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -147,18 +147,11 @@ private static void collectItems(
}

private ResourceObjectTypeDefinitionType getResourceObjectType(PrismPropertyWrapper<VariableBindingDefinitionType> propertyWrapper) {

if (propertyWrapper != null
&& propertyWrapper.getParent() != null
&& propertyWrapper.getParent().getParent() != null
&& propertyWrapper.getParent().getParent().getParent() != null
&& propertyWrapper.getParent().getParent().getParent().getParent() != null) {
PrismContainerValueWrapper containerValue = propertyWrapper.getParent().getParent().getParent().getParent().getParent();

if (containerValue != null && containerValue.getRealValue() instanceof ResourceObjectTypeDefinitionType) {
return (ResourceObjectTypeDefinitionType) containerValue.getRealValue();
}
PrismContainerValueWrapper<ResourceObjectTypeDefinitionType> containerValue = propertyWrapper.getParentContainerValue(ResourceObjectTypeDefinitionType.class);
if (containerValue != null && containerValue.getRealValue() != null) {
return containerValue.getRealValue();
}

return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ private void goToObjectPerformed(QName type) {
return;
}

getPageBase().removeLastBreadcrumb();
PageParameters parameters = new PageParameters();
parameters.add(OnePageParameterEncoder.PARAMETER, getAssignmentHolderDetailsModel().getObjectType().getOid());
getPageBase().navigateToNext(detailPage, parameters);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
*/
package com.evolveum.midpoint.gui.impl.factory.panel;

import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteQNamePanel;
import com.evolveum.midpoint.gui.api.component.button.DropdownButtonPanel;
import com.evolveum.midpoint.gui.api.prism.wrapper.*;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
Expand All @@ -15,13 +17,15 @@
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.springframework.stereotype.Component;

import jakarta.annotation.PostConstruct;
import javax.xml.namespace.QName;
import java.io.Serializable;
import java.util.Collection;

@Component
public class ResourceObjectClassFactory extends AbstractObjectClassFactory {
Expand All @@ -46,4 +50,25 @@ public void register() {
return wrapper.getPath().lastName().equivalent(ResourceObjectTypeDefinitionType.F_OBJECT_CLASS)
|| wrapper.getPath().lastName().equivalent(ResourceObjectTypeDefinitionType.F_AUXILIARY_OBJECT_CLASS);
}

@Override
protected InputPanel getPanel(PrismPropertyPanelContext<QName> panelCtx) {
InputPanel panel = super.getPanel(panelCtx);

if (panelCtx.getRealValueModel().getObject() != null) {
return panel;
}

if (!panelCtx.unwrapWrapperModel().getPath().lastName().equivalent(ResourceObjectTypeDefinitionType.F_OBJECT_CLASS)) {
return panel;
}

if (panel instanceof AutoCompleteQNamePanel) {
Collection<QName> choices = ((AutoCompleteQNamePanel<QName>) panel).loadChoices();
if (choices != null && choices.size() == 1) {
panelCtx.getRealValueModel().setObject(choices.iterator().next());
}
}
return panel;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,10 @@ public String getObject() {
public void setObject(String object) {
if (StringUtils.isBlank(object)) {
panelCtx.getRealValueModel().setObject(null);
return;
}
VariableBindingDefinitionType def = new VariableBindingDefinitionType()
.path(PrismContext.get().itemPathParser().asItemPathType(
"$" + ExpressionConstants.VAR_FOCUS + "/" + object
));
.path(PrismContext.get().itemPathParser().asItemPathType(object));
panelCtx.getRealValueModel().setObject(def);
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@

<wicket:fragment wicket:id="dynamicContent">
<div wicket:id="dynamicForm"/>
<div class="col-md-offset-6">
<div class="pt-3 text-center">
<div wicket:id="captcha"/>
</div>
</wicket:fragment>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.evolveum.midpoint.gui.api.prism.wrapper.*;
import com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
import com.evolveum.midpoint.gui.impl.prism.panel.*;
import com.evolveum.midpoint.gui.impl.prism.wrapper.ProtectedStringTypeWrapperImpl;
import com.evolveum.midpoint.gui.impl.util.GuiDisplayNameUtil;
Expand Down Expand Up @@ -92,18 +93,9 @@ protected void populateItem(ListItem<ItemWrapper<?, ?>> item) {
protected void populateNonContainer(ListItem<? extends ItemWrapper<?, ?>> item) {
item.setOutputMarkupId(true);

ItemPanel propertyPanel;
ItemPanelSettings settings = getSettings() != null ? getSettings().copy() : null;
if (item.getModelObject() instanceof ProtectedStringTypeWrapperImpl) {
propertyPanel = new VerticalFormPasswordPropertyPanel(
ID_PROPERTY, (IModel<PrismPropertyWrapper<ProtectedStringType>>) item.getModel(), settings);
} else if (item.getModelObject() instanceof PrismPropertyWrapper) {
propertyPanel = new VerticalFormPrismPropertyPanel(ID_PROPERTY, item.getModel(), settings);
} else {
propertyPanel = new VerticalFormPrismReferencePanel(ID_PROPERTY, item.getModel(), settings);
}
propertyPanel.setOutputMarkupId(true);
ItemPanel propertyPanel = WebPrismUtil.createVerticalPropertyPanel(ID_PROPERTY, item.getModel(), getSettings());

ItemPanelSettings settings = propertyPanel.getSettings();
if (settings != null) {
propertyPanel.add(
new VisibleBehaviour(() -> isNonContainerVisible(item, settings)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public class VerticalFormPrismPropertyHeaderPanel<T> extends PrismPropertyHeader

private static final long serialVersionUID = 1L;

private boolean isRequiredTagVisibleInHeaderPanel = false;


/**
* @param id
Expand All @@ -42,7 +44,11 @@ public VerticalFormPrismPropertyHeaderPanel(String id, IModel<PrismPropertyWrapp
@Override
protected void createRequired(String id) {
WebMarkupContainer required = new WebMarkupContainer(id);
required.add(new VisibleBehaviour(() -> false));
required.add(new VisibleBehaviour(() -> isRequiredTagVisibleInHeaderPanel));
add(required);
}

public void setRequiredTagVisibleInHeaderPanel(boolean requiredTagVisibleInHeaderPanel) {
isRequiredTagVisibleInHeaderPanel = requiredTagVisibleInHeaderPanel;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,25 +35,22 @@ public class VerticalFormPrismPropertyPanel<T> extends PrismPropertyPanel<T> {

private static final String ID_HEADER = "header";

private boolean isRequiredTagVisibleInHeaderPanel = false;

public VerticalFormPrismPropertyPanel(String id, IModel<PrismPropertyWrapper<T>> model, ItemPanelSettings settings) {
super(id, model, settings);
}

@Override
protected Component createHeaderPanel() {
return new VerticalFormPrismPropertyHeaderPanel<T>(ID_HEADER, getModel()) {
VerticalFormPrismPropertyHeaderPanel<T> header = new VerticalFormPrismPropertyHeaderPanel<T>(ID_HEADER, getModel()) {
@Override
protected void refreshPanel(AjaxRequestTarget target) {
target.add(VerticalFormPrismPropertyPanel.this);
}

@Override
protected void createRequired(String id) {
WebMarkupContainer required = new WebMarkupContainer(id);
required.add(new VisibleBehaviour(() -> false));
add(required);
}
};
header.setRequiredTagVisibleInHeaderPanel(this.isRequiredTagVisibleInHeaderPanel);
return header;
}

@Override
Expand All @@ -72,4 +69,8 @@ protected void remove(PrismPropertyValueWrapper<T> valueToRemove, AjaxRequestTar
protected String getCssClassForValueContainer() {
return "";
}

public void setRequiredTagVisibleInHeaderPanel(boolean requiredTagVisibleInHeaderPanel) {
isRequiredTagVisibleInHeaderPanel = requiredTagVisibleInHeaderPanel;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,20 @@ public class VerticalFormPrismReferenceHeaderPanel<R extends Referencable> exten

private static final long serialVersionUID = 1L;

private boolean isRequiredTagVisibleInHeaderPanel = false;

public VerticalFormPrismReferenceHeaderPanel(String id, IModel<PrismReferenceWrapper<R>> model) {
super(id, model);
}

@Override
protected void createRequired(String id) {
WebMarkupContainer required = new WebMarkupContainer(id);
required.add(new VisibleBehaviour(() -> false));
required.add(new VisibleBehaviour(() -> isRequiredTagVisibleInHeaderPanel));
add(required);
}

public void setRequiredTagVisibleInHeaderPanel(boolean requiredTagVisibleInHeaderPanel) {
isRequiredTagVisibleInHeaderPanel = requiredTagVisibleInHeaderPanel;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
public class VerticalFormPrismReferencePanel<R extends Referencable>
extends PrismReferencePanel<R> {

private boolean isRequiredTagVisibleInHeaderPanel = false;

public VerticalFormPrismReferencePanel(
String id,
IModel<PrismReferenceWrapper<R>> model,
Expand All @@ -53,15 +55,21 @@ protected void remove(

@Override
protected Component createHeaderPanel() {
return new VerticalFormPrismReferenceHeaderPanel<R>(ID_HEADER, getModel()) {
VerticalFormPrismReferenceHeaderPanel<R> header = new VerticalFormPrismReferenceHeaderPanel<R>(ID_HEADER, getModel()) {
@Override
protected void refreshPanel(AjaxRequestTarget target) {
target.add(VerticalFormPrismReferencePanel.this);
}
};
header.setRequiredTagVisibleInHeaderPanel(this.isRequiredTagVisibleInHeaderPanel);
return header;
}

protected String getCssClassForValueContainer() {
return "";
}

public void setRequiredTagVisibleInHeaderPanel(boolean requiredTagVisibleInHeaderPanel) {
isRequiredTagVisibleInHeaderPanel = requiredTagVisibleInHeaderPanel;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ public static String getDisplayName(ResourceObjectTypeDefinitionType objectType)
if (objectClass != null) {
boolean isNotDisplayNameEmpty = StringUtils.isNotEmpty(sb.toString());
if (isNotDisplayNameEmpty) {
sb.append("(");
sb.append(" (");
}
sb.append(objectClass.getLocalPart());
if (isNotDisplayNameEmpty) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="prism-title row col-md-12" style="padding-bottom: 10px;" wicket:id="header"/>
<div class="prism-properties top-level-prism-container" style="border-top:none;">
<div class="col-12 p-0 pt-4 text-bold" wicket:id="header"/>
<div class="border-top py-2">
<div>
<div class="row prism-property" wicket:id="property"/>
<div wicket:id="property"/>
</div>
</div>
</wicket:panel>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;

import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanel;

import com.evolveum.midpoint.gui.impl.prism.panel.vertical.form.VerticalFormPrismPropertyPanel;

import com.evolveum.midpoint.gui.impl.prism.panel.vertical.form.VerticalFormPrismReferencePanel;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.markup.html.basic.Label;
Expand Down Expand Up @@ -90,16 +97,14 @@ private void initLayout(String groupName, List<AbstractFormItemType> formItems,
continue;
}

ItemWrapper<?, ?> itemWrapper = findAndTailorItemWrapper(formItem, getObjectWrapper());

try {
Panel panel = parentPage.initItemPanel(itemView.newChildId(), itemWrapper.getTypeName(), Model.of(itemWrapper), null);
panel.setOutputMarkupId(true);
itemView.add(panel);
} catch (SchemaException e) {
getSession().error("Cannot create panel " + e.getMessage());
IModel<ItemWrapper<?, ?>> model = () -> findAndTailorItemWrapper(formItem, getObjectWrapper());
Panel panel = WebPrismUtil.createVerticalPropertyPanel(itemView.newChildId(), model, null);
if (panel instanceof VerticalFormPrismPropertyPanel<?>) {
((VerticalFormPrismPropertyPanel)panel).setRequiredTagVisibleInHeaderPanel(true);
} else if (panel instanceof VerticalFormPrismReferencePanel<?>) {
((VerticalFormPrismReferencePanel)panel).setRequiredTagVisibleInHeaderPanel(true);
}

itemView.add(panel);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="container-fluid prism-object" >
<div class="row col-md-12">
<div class="container-fluid prism-container" wicket:id="formFields"/>
<div>
<div class="col-md-12 p-0">
<div wicket:id="formFields"/>
</div>
</div>
</wicket:panel>
Expand Down

0 comments on commit af02704

Please sign in to comment.