Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Sep 6, 2018
2 parents 68975db + e5bbd6e commit df41fa2
Show file tree
Hide file tree
Showing 86 changed files with 1,972 additions and 1,306 deletions.
10 changes: 10 additions & 0 deletions gui/admin-gui/pom.xml
Expand Up @@ -220,6 +220,16 @@
<version>2.5.3</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-cas</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client-core</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator-core</artifactId>
Expand Down
Expand Up @@ -22,6 +22,7 @@
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.TabbedPanel;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -118,13 +119,11 @@ public boolean isEnabled(){
form.add(addButton);
}

private List<ITab> createAssignmentTabs() {
protected List<ITab> createAssignmentTabs() {
List<ITab> tabs = new ArrayList<>();
//TODO check authorization for each tab
VisibleEnableBehaviour authorization = new VisibleEnableBehaviour(){
};

tabs.add(new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.ROLE"), authorization) {
tabs.add(new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.ROLE"),
new VisibleBehaviour(() -> isTabVisible(ObjectTypes.ROLE))) {

private static final long serialVersionUID = 1L;

Expand Down Expand Up @@ -152,7 +151,8 @@ public String getCount() {
});

tabs.add(
new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.ORG"), authorization) {
new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.ORG"),
new VisibleBehaviour(() -> isTabVisible(ObjectTypes.ORG))) {

private static final long serialVersionUID = 1L;

Expand Down Expand Up @@ -186,7 +186,8 @@ public String getCount() {
});


tabs.add(new CountablePanelTab(createStringResource("TypedAssignablePanel.orgTreeView"), authorization) {
tabs.add(new CountablePanelTab(createStringResource("TypedAssignablePanel.orgTreeView"),
new VisibleBehaviour(() -> isTabVisible(ObjectTypes.ORG))) {

private static final long serialVersionUID = 1L;

Expand Down Expand Up @@ -214,7 +215,8 @@ public String getCount() {
});

tabs.add(
new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.SERVICE"), authorization) {
new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.SERVICE"),
new VisibleBehaviour(() -> isTabVisible(ObjectTypes.SERVICE))) {

private static final long serialVersionUID = 1L;

Expand Down Expand Up @@ -243,7 +245,8 @@ public String getCount() {
});

tabs.add(
new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.RESOURCE"), authorization) {
new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.RESOURCE"),
new VisibleBehaviour(() -> isTabVisible(ObjectTypes.RESOURCE))) {

private static final long serialVersionUID = 1L;

Expand All @@ -269,6 +272,15 @@ public String getCount() {
return tabs;
}

private boolean isTabVisible(ObjectTypes objectType){
List<ObjectTypes> availableObjectTypesList = getAvailableObjectTypesList();
return availableObjectTypesList == null || availableObjectTypesList.size() == 0 || availableObjectTypesList.contains(objectType);
}

protected List<ObjectTypes> getAvailableObjectTypesList(){
return WebComponentUtil.createAssignableTypesList();
}

private int getTabPanelSelectedCount(WebMarkupContainer panel){
if (panel != null && panel instanceof AbstractAssignmentPopupTabPanel){
return ((AbstractAssignmentPopupTabPanel) panel).getSelectedObjectsList().size();
Expand Down
Expand Up @@ -30,16 +30,16 @@
* Base class for most midPoint GUI panels. It has a constructor and
* utility methods for convenient handling of the model. It also has
* other utility methods often used in reusable components.
*
* <p>
* Almost all reusable components should extend this class.
*
* @author lazyman
* @author semancik
*/
public class BasePanel<T> extends Panel {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;

private IModel<T> model;
private IModel<T> model;

public BasePanel(String id) {
this(id, null);
Expand All @@ -66,10 +66,14 @@ public String getString(String resourceKey, Object... objects) {
return createStringResource(resourceKey, objects).getString();
}

public String getString(Enum e) {
return createStringResource(e).getString();
}

public StringResourceModel createStringResource(String resourceKey, Object... objects) {
return new StringResourceModel(resourceKey, this).setModel(null)
.setDefaultValue(resourceKey)
.setParameters(objects);
return new StringResourceModel(resourceKey, this).setModel(null)
.setDefaultValue(resourceKey)
.setParameters(objects);
// return StringResourceModelMigration.of(resourceKey, this, null, resourceKey, objects);
}

Expand Down
@@ -0,0 +1,21 @@
<!--
~ Copyright (c) 2010-2018 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<wicket:panel xmlns:wicket="http://wicket.apache.org">
<div wicket:id="operation">
<span class="label" wicket:id="label"><span wicket:id="text"/></span>
</div>
</wicket:panel>
@@ -0,0 +1,177 @@
/*
* Copyright (c) 2010-2018 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.evolveum.midpoint.gui.api.component;

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.web.util.InfoTooltipBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PendingOperationExecutionStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PendingOperationType;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;

import java.util.List;

/**
* Created by Viliam Repan (lazyman).
*/
public class PendingOperationPanel extends BasePanel<List<PendingOperationType>> {

private static final String ID_LABEL = "label";
private static final String ID_OPERATION = "operation";
private static final String ID_TEXT = "text";

public PendingOperationPanel(String id, IModel<List<PendingOperationType>> model) {
super(id, model);
}

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

initLayout();
}

private void initLayout() {
ListView<PendingOperationType> operation = new ListView<PendingOperationType>(ID_OPERATION, getModel()) {

private static final long serialVersionUID = 1L;

@Override
protected void populateItem(ListItem<PendingOperationType> item) {
item.setRenderBodyOnly(true);

WebMarkupContainer label = new WebMarkupContainer(ID_LABEL);
item.add(label);

Label text = new Label(ID_TEXT, createLabelText(item.getModel()));
text.setRenderBodyOnly(true);
label.add(text);

label.add(AttributeAppender.append("class", createTextClass(item.getModel())));

label.add(AttributeModifier.replace("title", createTextTooltipModel(item.getModel())));
label.add(new InfoTooltipBehavior() {

@Override
public String getCssClass() {
return null;
}
});
}
};
add(operation);
}

private IModel<String> createTextClass(IModel<PendingOperationType> model) {
return new AbstractReadOnlyModel<String>() {

private static final long serialVersionUID = 1L;

@Override
public String getObject() {
PendingOperationType op = model.getObject();
OperationResultStatusType rStatus = op.getResultStatus();
PendingOperationExecutionStatusType eStatus = op.getExecutionStatus();

if (rStatus != null &&
(rStatus == OperationResultStatusType.FATAL_ERROR || rStatus == OperationResultStatusType.PARTIAL_ERROR)) {
return "label-danger";
}

if (rStatus != null &&
(rStatus == OperationResultStatusType.UNKNOWN || rStatus == OperationResultStatusType.WARNING)) {
return "label-warning";
}

if ((rStatus != null && rStatus == OperationResultStatusType.SUCCESS)
|| (eStatus != null && eStatus == PendingOperationExecutionStatusType.COMPLETED)) {
return "label-success";
}

if ((rStatus != null &&
(rStatus == OperationResultStatusType.IN_PROGRESS || rStatus == OperationResultStatusType.NOT_APPLICABLE || rStatus == OperationResultStatusType.HANDLED_ERROR))) {
return "label-info";
}

return "label-default";
}
};
}

private IModel<String> createTextTooltipModel(IModel<PendingOperationType> model) {
return new AbstractReadOnlyModel<String>() {

private static final long serialVersionUID = 1L;

@Override
public String getObject() {
StringBuilder sb = new StringBuilder();

PendingOperationType op = model.getObject();

buildStringItem(sb, "PendingOperationPanel.resultStatus", op.getResultStatus());
buildStringItem(sb, "PendingOperationPanel.executionStatus", op.getExecutionStatus());
buildStringItem(sb, "PendingOperationPanel.attempt", op.getAttemptNumber());
buildStringItem(sb, "PendingOperationPanel.pendingOperationType", op.getType());
buildStringItem(sb, "PendingOperationPanel.lastAttemptTimestamp", WebComponentUtil.formatDate(op.getLastAttemptTimestamp()));
buildStringItem(sb, "PendingOperationPanel.completionTimestamp", WebComponentUtil.formatDate(op.getCompletionTimestamp()));

return sb.toString();
}
};
}

private void buildStringItem(StringBuilder sb, String key, Object obj) {
if (obj == null) {
return;
}

sb.append(getString(key)).append(" ");

String value = obj instanceof Enum ? getString((Enum) obj) : obj.toString();

sb.append(value);
sb.append('\n');
}

private IModel<String> createLabelText(IModel<PendingOperationType> model) {
return new AbstractReadOnlyModel<String>() {

private static final long serialVersionUID = 1L;

@Override
public String getObject() {
PendingOperationType op = model.getObject();
OperationResultStatusType rStatus = op.getResultStatus();
PendingOperationExecutionStatusType eStatus = op.getExecutionStatus();

if (rStatus == null) {
return getString(eStatus);
}

return getString(rStatus);
}
};
}
}
Expand Up @@ -83,7 +83,7 @@
</span>
</div>
<div class="navbar-ajax">
<img id="ajax_busy" src="img/ajax-loader.gif" />
<img id="ajax_busy" src="img/ajax-loader.gif" style="display: inline; visibility: hidden;"/>
</div>

<!-- Navbar Right Menu -->
Expand Down
Expand Up @@ -2354,7 +2354,7 @@ protected String determineDataLanguage() {
}
}

protected void reloadShoppingCartIcon(AjaxRequestTarget target){
public void reloadShoppingCartIcon(AjaxRequestTarget target){
target.add(get(createComponentPath(ID_MAIN_HEADER, ID_NAVIGATION, ID_CART_BUTTON)));
}

Expand Down
Expand Up @@ -59,10 +59,14 @@
import com.evolveum.midpoint.util.*;
import com.evolveum.midpoint.util.exception.CommunicationException;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb;
import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageClass;
import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageInstance;
import com.evolveum.midpoint.web.component.data.SelectableBeanObjectDataProvider;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.prism.*;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDeleteDialogDto;
import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -2637,6 +2641,21 @@ public static LookupTableType createAppenderChoices(PageBase pageBase) {
return lookupTable;
}

public static Class getPreviousPageClass(PageBase parentPage){
List<Breadcrumb> breadcrumbs = parentPage.getBreadcrumbs();
if (breadcrumbs == null || breadcrumbs.size() < 2){
return null;
}
Breadcrumb previousBreadcrumb = breadcrumbs.get(breadcrumbs.size() - 2);
Class page = null;
if (previousBreadcrumb instanceof BreadcrumbPageClass){
page = ((BreadcrumbPageClass) previousBreadcrumb).getPage();
} else if (previousBreadcrumb instanceof BreadcrumbPageInstance){
page = ((BreadcrumbPageInstance) previousBreadcrumb).getPage().getClass();
}
return page;
}

@NotNull
public static List<InlineMenuItem> createMenuItemsFromActions(@NotNull List<GuiActionType> actions, String operation,
PageBase pageBase, @NotNull Supplier<Collection<? extends ObjectType>> selectedObjectsSupplier) {
Expand Down

0 comments on commit df41fa2

Please sign in to comment.