Skip to content

Commit

Permalink
MID-8300: fix visibility for default view in left menu
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Nov 23, 2022
1 parent 6b32539 commit c06594f
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.cases.api.util.QueryUtils;
Expand Down Expand Up @@ -179,7 +180,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 +529,36 @@ 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;

Optional<CompiledObjectCollectionView> defaultViewOptional = getPageBase().getCompiledGuiProfile().findAllApplicableObjectCollectionViews(pageDesc.getTypeName()).stream()
.filter(view -> view.isDefaultView()).findFirst();

if (defaultViewOptional.isPresent()) {
CompiledObjectCollectionView defaultView = defaultViewOptional.get();
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
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
Expand Down Expand Up @@ -65,6 +64,13 @@ protected void initLayout() {
Fragment templateFragment = createTemplateFragment();
add(templateFragment);
} else {
Collection<CompiledObjectCollectionView> allApplicableArchetypeViews = findAllApplicableArchetypeViews();
if (allApplicableArchetypeViews.size() == 1) {
CompiledObjectCollectionView view = allApplicableArchetypeViews.iterator().next();
if (!view.isDefaultView()) {
applyTemplate(allApplicableArchetypeViews.iterator().next());
}
}
super.initLayout();
}
}
Expand Down Expand Up @@ -111,21 +117,8 @@ protected QName getType() {

@Override
protected void onTemplateChosePerformed(CompiledObjectCollectionView collectionViews, AjaxRequestTarget target) {
PrismObject<AH> assignmentHolder;
try {
assignmentHolder = getPrismContext().createObject(PageAssignmentHolderDetails.this.getType());
} catch (Throwable e) {
LOGGER.error("Cannot create prism object for {}. Using object from page model.", PageAssignmentHolderDetails.this.getType());
assignmentHolder = getObjectDetailsModels().getObjectWrapperModel().getObject().getObjectOld().clone();
}
List<ObjectReferenceType> archetypeRef = PageAssignmentHolderDetails.this.getArchetypeReferencesList(collectionViews);
if (archetypeRef != null) {
AssignmentHolderType holder = assignmentHolder.asObjectable();
archetypeRef.forEach(a -> holder.getAssignment().add(ObjectTypeUtil.createAssignmentTo(a, getPrismContext())));
applyTemplate(collectionViews);

}

reloadObjectDetailsModel(assignmentHolder);
Fragment fragment = createDetailsFragment();
fragment.setOutputMarkupId(true);
PageAssignmentHolderDetails.this.replace(fragment);
Expand All @@ -135,6 +128,24 @@ protected void onTemplateChosePerformed(CompiledObjectCollectionView collectionV
};
}

private void applyTemplate(CompiledObjectCollectionView collectionViews) {
PrismObject<AH> assignmentHolder;
try {
assignmentHolder = getPrismContext().createObject(PageAssignmentHolderDetails.this.getType());
} catch (Throwable e) {
LOGGER.error("Cannot create prism object for {}. Using object from page model.", PageAssignmentHolderDetails.this.getType());
assignmentHolder = getObjectDetailsModels().getObjectWrapperModel().getObject().getObjectOld().clone();
}
List<ObjectReferenceType> archetypeRef = PageAssignmentHolderDetails.this.getArchetypeReferencesList(collectionViews);
if (archetypeRef != null) {
AssignmentHolderType holder = assignmentHolder.asObjectable();
archetypeRef.forEach(a -> holder.getAssignment().add(ObjectTypeUtil.createAssignmentTo(a, getPrismContext())));

}

reloadObjectDetailsModel(assignmentHolder);
}

protected List<ObjectReferenceType> getArchetypeReferencesList(CompiledObjectCollectionView collectionViews) {
return ObjectCollectionViewUtil.getArchetypeReferencesList(collectionViews);
}
Expand Down

0 comments on commit c06594f

Please sign in to comment.