Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/simulations…
Browse files Browse the repository at this point in the history
…-repo
  • Loading branch information
tonydamage committed Nov 25, 2022
2 parents ab240df + 557789c commit 8790286
Show file tree
Hide file tree
Showing 407 changed files with 15,334 additions and 9,481 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ node_modules/

# IDEA files
/.idea/
/.run/
*.iml

# Eclipse files
Expand Down
13 changes: 7 additions & 6 deletions gui/admin-gui/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 7 additions & 8 deletions gui/admin-gui/src/frontend/scss/_list-group-menu.scss
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
$list-group-item-padding-sm-y: 0.5rem;
$list-group-item-padding-sm-x: 1rem;

$max-levels: 10;

@mixin list-reset() {
list-style: none;
padding-left: 0;
Expand Down Expand Up @@ -148,14 +150,11 @@ $list-group-item-padding-sm-x: 1rem;
@include list-group-menu-item;
border-radius: inherit;

// 3rd level padding
& .list-group-submenu > .list-group-submenu-item > div {
padding-left: 3.25rem;
}

// 2nd level padding
& > div.item {
padding-left: 2rem;
// padding for level 3-10
@for $i from 2 through $max-levels {
& > div.item.level-#{$i} {
padding-left: 2rem + ($i - 2) * 1.25rem;
}
}
}

Expand Down
2 changes: 2 additions & 0 deletions gui/admin-gui/src/frontend/scss/_tiles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
&.active {
border: 2px solid $primary;
border-radius: $border-radius;
background-color: rgba($primary, 15%);
}
}

Expand All @@ -50,6 +51,7 @@

&.active {
border-color: $primary-alt;
background-color: rgba($primary-alt, 15%);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ protected List<ObjectOrdering> createObjectOrderings(SortParam<String> sortParam
}

@Override
protected Set<? extends O> getSelected() {
public Set<? extends O> getSelected() {
List<O> preselectedObjects = getPreselectedObjectList();
return preselectedObjects == null ? new HashSet<>() : new HashSet<>(preselectedObjects);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,7 @@ public ObjectReferenceType convertToObject(String value, Locale locale) throws C
type, query, new OperationResult("searchObjects"), pageBase);
if (CollectionUtils.isNotEmpty(objectsList)) {
if (objectsList.size() == 1) {
return ObjectTypeUtil.createObjectRefWithFullObject(
objectsList.get(0), pageBase.getPrismContext());
return ObjectTypeUtil.createObjectRefWithFullObject(objectsList.get(0));
}
pageBase.error("Couldn't specify one object by name '" + value + "' and type " + type.getSimpleName() + ". Please will try specific type of object.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<button wicket:id="buttonContainer" class="btn dropdown-toggle dropdown-icon" type="button" data-toggle="dropdown">
<button wicket:id="buttonContainer" class="btn dropdown-icon" type="button" data-toggle="dropdown">
<span class="badge bg-teal" wicket:id="info"></span>
<i class="mr-1 fa " wicket:id="icon"></i>
<span wicket:id="label"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ private void initLayout() {
WebMarkupContainer buttonContainer = new WebMarkupContainer(ID_BUTTON_CONTAINER);
buttonContainer.setOutputMarkupId(true);
buttonContainer.add(AttributeAppender.append("class", getSpecialButtonClass()));
buttonContainer.add(AttributeAppender.append("class", () -> hasToggleIcon() ? " dropdown-toggle " : ""));
add(buttonContainer);

Label info = new Label(ID_INFO, new PropertyModel<>(getModel(), DropdownButtonDto.F_INFO));
Expand Down Expand Up @@ -107,6 +108,10 @@ protected void populateItem(ListItem<InlineMenuItem> item) {
dropdownMenuContainer.add(li);
}

protected boolean hasToggleIcon() {
return true;
}

public WebMarkupContainer getButtonContainer() {
return (WebMarkupContainer)get(ID_BUTTON_CONTAINER);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
*/
package com.evolveum.midpoint.gui.api.component.delta;

import com.evolveum.midpoint.model.api.visualizer.Visualization;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
Expand All @@ -18,8 +20,6 @@
import com.evolveum.midpoint.gui.api.component.result.OperationResultPopupPanel;
import com.evolveum.midpoint.gui.api.model.ReadOnlyModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.model.api.visualizer.Scene;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.DeltaConvertor;
import com.evolveum.midpoint.schema.result.OperationResult;
Expand Down Expand Up @@ -164,7 +164,7 @@ private String getBoxCssClass() {
}

private SceneDto loadSceneForDelta() throws SchemaException, ExpressionEvaluationException {
Scene scene;
Visualization scene;

ObjectDelta<? extends ObjectType> delta;
ObjectDeltaType deltaType = getModel().getObject().getObjectDelta();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.api.authentication.GuiProfiledPrincipal;
import com.evolveum.midpoint.model.api.util.ResourceUtils;
import com.evolveum.midpoint.model.api.visualizer.Scene;
import com.evolveum.midpoint.model.api.visualizer.Visualization;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.crypto.EncryptionException;
import com.evolveum.midpoint.prism.crypto.Protector;
Expand Down Expand Up @@ -4450,7 +4450,7 @@ public static SceneDto createSceneDto(CaseType caseObject, PageBase pageBase, St
OperationResult result = new OperationResult(operation);
Task task = pageBase.createSimpleTask(operation);
try {
Scene deltasScene = SceneUtil.visualizeObjectTreeDeltas(caseObject.getApprovalContext().getDeltasToApprove(),
Visualization deltasScene = SceneUtil.visualizeObjectTreeDeltas(caseObject.getApprovalContext().getDeltasToApprove(),
CaseTypeUtil.isClosed(caseObject) ? "pageWorkItem.changesApplied" : "pageWorkItem.delta",
pageBase.getPrismContext(), pageBase.getModelInteractionService(), objectRef, task, result);
return new SceneDto(deltasScene);
Expand All @@ -4469,7 +4469,7 @@ public static SceneDto createSceneDtoForManualCase(CaseType caseObject, PageBase
OperationResult result = new OperationResult(operation);
Task task = pageBase.createSimpleTask(operation);
try {
Scene deltasScene = SceneUtil.visualizeObjectDeltaType(caseObject.getManualProvisioningContext().getPendingOperation().getDelta(),
Visualization deltasScene = SceneUtil.visualizeObjectDeltaType(caseObject.getManualProvisioningContext().getPendingOperation().getDelta(),
CaseTypeUtil.isClosed(caseObject) ? "pageWorkItem.changesApplied" : "pageWorkItem.changesToBeApplied", pageBase.getPrismContext(), pageBase.getModelInteractionService(), objectRef, task, result);
return new SceneDto(deltasScene);
} catch (SchemaException | ExpressionEvaluationException ex) {
Expand Down Expand Up @@ -4653,7 +4653,7 @@ public static List<SceneDto> computeChangesCategorizationList(ChangesByState cha
private static SceneDto createTaskChangesDto(String titleKey, String boxClassOverride, ObjectTreeDeltas deltas, ModelInteractionService modelInteractionService,
PrismContext prismContext, ObjectReferenceType objectRef, Task opTask, OperationResult result) throws SchemaException, ExpressionEvaluationException {
ObjectTreeDeltasType deltasType = ObjectTreeDeltas.toObjectTreeDeltasType(deltas);
Scene scene = SceneUtil.visualizeObjectTreeDeltas(deltasType, titleKey, prismContext, modelInteractionService, objectRef, opTask, result);
Visualization scene = SceneUtil.visualizeObjectTreeDeltas(deltasType, titleKey, prismContext, modelInteractionService, objectRef, opTask, result);
SceneDto sceneDto = new SceneDto(scene);
sceneDto.setBoxClassOverride(boxClassOverride);
return sceneDto;
Expand Down Expand Up @@ -5431,4 +5431,17 @@ private static void createToastForResource(AjaxRequestTarget target, Component p
.delay(5_000)
.body(panel.getString(key + ".text")).show(target);
}

public static String translateMessage(LocalizableMessage msg) {
if (msg == null) {
return null;
}

MidPointApplication application = MidPointApplication.get();
if (application == null) {
return msg.getFallbackMessage();
}

return application.getLocalizationService().translate(msg, getCurrentLocale());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,12 @@
package com.evolveum.midpoint.gui.impl.component.menu;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.cases.api.util.QueryUtils;
import com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.PageAssignmentHolderDetails;
import com.evolveum.midpoint.gui.impl.page.admin.cases.PageCase;
import com.evolveum.midpoint.gui.impl.page.admin.resource.PageResource;
import com.evolveum.midpoint.gui.impl.page.self.PageRequestAccess;
import com.evolveum.midpoint.gui.impl.page.self.dashboard.PageSelfDashboard;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.security.MidPointApplication;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
Expand All @@ -39,16 +29,20 @@
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValue;

import com.evolveum.midpoint.cases.api.util.QueryUtils;
import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.page.admin.AbstractPageObjectDetails;
import com.evolveum.midpoint.gui.impl.page.admin.cases.PageCase;
import com.evolveum.midpoint.gui.impl.page.admin.systemconfiguration.page.PageBaseSystemConfiguration;
import com.evolveum.midpoint.gui.impl.page.self.PageRequestAccess;
import com.evolveum.midpoint.gui.impl.page.self.dashboard.PageSelfDashboard;
import com.evolveum.midpoint.model.api.AccessCertificationService;
import com.evolveum.midpoint.model.api.ModelAuthorizationAction;
import com.evolveum.midpoint.model.api.authentication.CompiledDashboardType;
import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
Expand All @@ -62,7 +56,12 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.PageMounter;
import com.evolveum.midpoint.web.component.menu.*;
import com.evolveum.midpoint.web.page.admin.cases.*;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.cases.PageCaseWorkItem;
import com.evolveum.midpoint.web.page.admin.cases.PageCaseWorkItemsAll;
import com.evolveum.midpoint.web.page.admin.cases.PageCaseWorkItemsAllocatedToMe;
import com.evolveum.midpoint.web.page.admin.cases.PageWorkItemsClaimable;
import com.evolveum.midpoint.web.page.admin.certification.*;
import com.evolveum.midpoint.web.page.admin.configuration.*;
import com.evolveum.midpoint.web.page.admin.home.PageDashboardConfigurable;
Expand All @@ -79,6 +78,7 @@
import com.evolveum.midpoint.web.page.admin.workflow.PageAttorneySelection;
import com.evolveum.midpoint.web.page.admin.workflow.PageWorkItemsAttorney;
import com.evolveum.midpoint.web.page.self.PageSelfConsents;
import com.evolveum.midpoint.web.security.MidPointApplication;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
Expand Down Expand Up @@ -179,7 +179,7 @@ public void onClick(AjaxRequestTarget target) {
setResponsePage(page);
}
};
logo.add(new VisibleEnableBehaviour(() -> !isCustomLogoVisible(), () -> getPageBase().isLogoLinkEnabled()));
logo.add(new VisibleEnableBehaviour(() -> !isCustomLogoVisible(), () -> getPageBase().isLogoLinkEnabled()));
logo.add(AttributeAppender.append("class", () -> WebComponentUtil.getMidPointSkin().getNavbarCss()));
add(logo);

Expand Down Expand Up @@ -528,9 +528,35 @@ private SideBarMenuItem createAdditionalMenu(boolean experimentalFeaturesEnabled
}

private void createBasicAssignmentHolderMenuItems(MainMenuItem mainMenuItem, PageTypes pageDesc) {
MenuItem objectListMenuItem = createObjectListPageMenuItem(
"PageAdmin.menu.top." + pageDesc.getIdentifier() + ".list", pageDesc.getIcon(), pageDesc.getListClass());
mainMenuItem.addMenuItem(objectListMenuItem);
String label = "PageAdmin.menu.top." + pageDesc.getIdentifier() + ".list";
String icon = pageDesc.getIcon();
Class<? extends PageBase> page = pageDesc.getListClass();
boolean isDefaultViewVisible = true;

CompiledObjectCollectionView defaultView = getPageBase().getCompiledGuiProfile().findAllApplicableObjectCollectionViews(pageDesc.getTypeName()).stream()
.filter(view -> view.isDefaultView()).findFirst().orElse(null);

if (defaultView != null) {
isDefaultViewVisible = WebComponentUtil.getElementVisibility(defaultView.getVisibility());
if (isDefaultViewVisible) {
DisplayType viewDisplayType = defaultView.getDisplay();

PolyStringType display = WebComponentUtil.getCollectionLabel(viewDisplayType);
if (display != null) {
label = WebComponentUtil.getTranslatedPolyString(display);
}

String iconClass = GuiDisplayTypeUtil.getIconCssClass(viewDisplayType);
if (StringUtils.isNotEmpty(iconClass)) {
icon = iconClass;
}
}
}

if (isDefaultViewVisible) {
mainMenuItem.addMenuItem(createObjectListPageMenuItem(label, icon, page));
}

addCollectionsMenuItems(mainMenuItem, pageDesc.getTypeName(), pageDesc.getListClass());

if (PageTypes.CASE != pageDesc) {
Expand Down Expand Up @@ -647,18 +673,18 @@ public boolean isMenuActive(WebPage page) {
private void addCollectionsMenuItems(MainMenuItem mainMenuItem, QName type, Class<? extends PageBase> redirectToPage) {
List<CompiledObjectCollectionView> objectViews = getPageBase().getCompiledGuiProfile().findAllApplicableObjectCollectionViews(type);

objectViews.forEach(objectView -> {
List<MenuItem> items = objectViews.stream().map(objectView -> {
if (objectView.isDefaultView() || !WebComponentUtil.getElementVisibility(objectView.getVisibility())) {
return;
return null;
}

OperationTypeType operationTypeType = objectView.getApplicableForOperation();
if (operationTypeType != null && operationTypeType != OperationTypeType.MODIFY) {
return;
return null;
}

if (objectView.isDefaultView()) {
return;
return null;
}
DisplayType viewDisplayType = objectView.getDisplay();

Expand All @@ -672,19 +698,18 @@ private void addCollectionsMenuItems(MainMenuItem mainMenuItem, QName type, Clas
}

String iconClass = GuiDisplayTypeUtil.getIconCssClass(viewDisplayType);
MenuItem userViewMenu = new MenuItem(label,
MenuItem menuItem = new MenuItem(label,
StringUtils.isEmpty(iconClass) ? BaseMenuItem.DEFAULT_ICON : iconClass, redirectToPage, pageParameters, isObjectCollectionMenuActive(objectView));
userViewMenu.setDisplayOrder(objectView.getDisplayOrder());
mainMenuItem.addCollectionMenuItem(userViewMenu);
});
menuItem.setDisplayOrder(objectView.getDisplayOrder());

return menuItem;
}).filter(i -> i != null).collect(Collectors.toList());

// We need to sort after we get all the collections. Only then we have correct collection labels.
// We do not want to determine the labels twice.
items.sort(
Comparator.comparing(MenuItem::getDisplayOrder, Comparator.nullsLast(Comparator.naturalOrder()))
.thenComparing(MenuItem::getNameModel, Comparator.nullsLast(Comparator.naturalOrder())));

// TODO: can this be combined in a single sort?
// collectionMenuItems.sort(Comparator.comparing(o -> o.getNameModel().getObject()));
// collectionMenuItems.sort(Comparator.comparingInt(o -> ObjectUtils.defaultIfNull(o.getDisplayOrder(), Integer.MAX_VALUE)));
// return collectionMenuItems;
items.forEach(i -> mainMenuItem.addCollectionMenuItem(i));
}

private boolean isObjectCollectionMenuActive(CompiledObjectCollectionView objectView) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
/*
* Copyright (c) 2022 Evolveum and contributors
* Copyright (c) 2010-2022 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.gui.impl.page.self.requestAccess;
package com.evolveum.midpoint.gui.impl.component.menu.listGroup;

import java.io.Serializable;

Expand All @@ -31,5 +31,5 @@ public CustomListGroupMenuItem(String iconCss, String label) {
super(iconCss, label);
}

abstract Component createMenuItemPanel(String id, IModel<ListGroupMenuItem<T>> model, SerializableBiConsumer<AjaxRequestTarget, ListGroupMenuItem<T>> oncClickHandler);
public abstract Component createMenuItemPanel(String id, IModel<ListGroupMenuItem<T>> model, SerializableBiConsumer<AjaxRequestTarget, ListGroupMenuItem<T>> oncClickHandler);
}

0 comments on commit 8790286

Please sign in to comment.