Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
katkav committed Apr 12, 2017
2 parents f62e4f5 + 03cbd1f commit 8fdce87
Show file tree
Hide file tree
Showing 17 changed files with 525 additions and 28 deletions.
4 changes: 2 additions & 2 deletions config/initial-objects/090-report-audit.xml

Large diffs are not rendered by default.

Expand Up @@ -79,6 +79,7 @@ public class AssignmentEditorDto extends SelectableBean implements Comparable<As
public static final String F_FOCUS_TYPE = "focusType";
public static final String F_TENANT_REF = "tenantRef";
public static final String F_ORG_REF = "orgRef";
public static final String F_NEW_ASSIGNMENT = "newAssignment";
public static final String F_ALT_NAME = "altName";
public static final String F_IS_ORG_UNIT_MANAGER = "isOrgUnitManager";

Expand Down Expand Up @@ -166,6 +167,18 @@ public static AssignmentEditorDto createDtoAddFromSelectedObject(ObjectType obje
AssignmentEditorDto dto = createDtoFromObject(object, UserDtoStatus.ADD, relation, pageBase);
dto.setDelegationOwner(delegationOwner);
if (SchemaConstants.ORG_DEPUTY.equals(relation)){
OtherPrivilegesLimitationType limitations = new OtherPrivilegesLimitationType();

WorkItemSelectorType approvalWorkItemSelector = new WorkItemSelectorType();
approvalWorkItemSelector.all(Boolean.TRUE);
limitations.setApprovalWorkItems(approvalWorkItemSelector);

WorkItemSelectorType certificationWorkItemSelector = new WorkItemSelectorType();
certificationWorkItemSelector.all(Boolean.TRUE);
limitations.setCertificationWorkItems(certificationWorkItemSelector);

dto.setPrivilegesLimitation(limitations);

dto.setMinimized(false);
} else {
dto.setMinimized(true);
Expand Down Expand Up @@ -794,6 +807,15 @@ public void setDefaultRelation(){
}
}

public OtherPrivilegesLimitationType getPrivilegesLimitation(){
return newAssignment.getLimitOtherPrivileges();
}

public void setPrivilegesLimitation(OtherPrivilegesLimitationType limitations){
newAssignment.setLimitOtherPrivileges(limitations);

}

@Override
public boolean equals(Object o) {
if (this == o)
Expand Down
Expand Up @@ -107,6 +107,40 @@
</div>
</div>
</div>
<div>
<div class="row prism-property">
<div class="col-xs-4" />
<div class="col-xs-8">
<div class="row">
<input type="checkbox" wicket:id="approvalWorkItems"/>
<wicket:message key="DelegationEditorPanel.delegateApprovalWorkItems"/>
</div>
</div>
</div>
</div>
<div>
<div class="row prism-property">
<div class="col-xs-4" />
<div class="col-xs-8">
<div class="row">
<input type="checkbox" wicket:id="certificationWorkItems"/>
<wicket:message key="DelegationEditorPanel.delegateCertificationWorkItems"/>
</div>
</div>
</div>
</div>
<div>
<div class="row prism-property">
<div class="col-xs-4" />
<div class="col-xs-8">
<div class="row">
<input type="checkbox" wicket:id="managementWorkItems"/>
<!--TODO uncomment when it is implemented-->
<!--<wicket:message key="DelegationEditorPanel.delegateManagementWorkItems"/>-->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Expand Down
Expand Up @@ -18,6 +18,7 @@

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.togglebutton.ToggleIconButton;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.schema.result.OperationResult;
Expand All @@ -28,10 +29,14 @@
import com.evolveum.midpoint.web.page.admin.users.component.AssignmentPreviewDialog;
import com.evolveum.midpoint.web.page.admin.users.component.AssignmentsPreviewDto;
import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OtherPrivilegesLimitationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkItemSelectorType;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
import org.apache.wicket.markup.html.WebMarkupContainer;
Expand All @@ -40,6 +45,7 @@
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;

Expand Down Expand Up @@ -68,6 +74,9 @@ public class DelegationEditorPanel extends AssignmentEditorPanel {
private static final String ID_LIMIT_PRIVILEGES_BUTTON = "limitPrivilegesButton";
private List<String> privilegesNames = new ArrayList<>();
private static final String ID_EXPAND = "expand";
private static final String ID_DELEGATE_APPROVAL_WI = "approvalWorkItems";
private static final String ID_DELEGATE_CERTIFICATION_WI = "certificationWorkItems";
private static final String ID_DELEGATE_MANAGEMENT_WI = "managementWorkItems";

private static final String DOT_CLASS = DelegationEditorPanel.class.getName() + ".";
private static final String OPERATION_GET_TARGET_REF_NAME = DOT_CLASS + "getTargetRefName";
Expand Down Expand Up @@ -233,6 +242,130 @@ public boolean isVisible(){
}
});
body.add(limitPrivilegesButton);

AjaxCheckBox approvalRights = new AjaxCheckBox(ID_DELEGATE_APPROVAL_WI,
new IModel<Boolean>(){
private static final long serialVersionUID = 1L;

@Override
public Boolean getObject(){
AssignmentEditorDto dto = getModelObject();
if (dto.getPrivilegesLimitation() == null ||
dto.getPrivilegesLimitation().getApprovalWorkItems() == null ||
dto.getPrivilegesLimitation().getApprovalWorkItems().isAll() == null){
return false;
}
return dto.getPrivilegesLimitation().getApprovalWorkItems().isAll();
}

@Override
public void setObject(Boolean value){
AssignmentEditorDto dto = getModelObject();
OtherPrivilegesLimitationType limitations = dto.getPrivilegesLimitation();
if (limitations == null ){
limitations = new OtherPrivilegesLimitationType();
dto.setPrivilegesLimitation(limitations);
}

WorkItemSelectorType workItemSelector = new WorkItemSelectorType();
workItemSelector.all(value);
limitations.setApprovalWorkItems(workItemSelector);
}

@Override
public void detach(){
}
}) {
private static final long serialVersionUID = 1L;

@Override
protected void onUpdate(AjaxRequestTarget target) {
}
};
approvalRights.setOutputMarkupId(true);
approvalRights.add(new AjaxFormComponentUpdatingBehavior("blur") {
@Override
protected void onUpdate(AjaxRequestTarget target) {}
});
approvalRights.add(new VisibleEnableBehaviour(){
@Override
public boolean isEnabled(){
return getModel().getObject().isEditable();
}
});
body.add(approvalRights);

AjaxCheckBox certificationRights = new AjaxCheckBox(ID_DELEGATE_CERTIFICATION_WI,
new IModel<Boolean>(){
private static final long serialVersionUID = 1L;

@Override
public Boolean getObject(){
AssignmentEditorDto dto = getModelObject();
if (dto.getPrivilegesLimitation() == null ||
dto.getPrivilegesLimitation().getCertificationWorkItems() == null ||
dto.getPrivilegesLimitation().getCertificationWorkItems().isAll() == null){
return false;
}
return dto.getPrivilegesLimitation().getCertificationWorkItems().isAll();
}

@Override
public void setObject(Boolean value){
AssignmentEditorDto dto = getModelObject();
OtherPrivilegesLimitationType limitations = dto.getPrivilegesLimitation();
if (limitations == null ){
limitations = new OtherPrivilegesLimitationType();
dto.setPrivilegesLimitation(limitations);
}

WorkItemSelectorType workItemSelector = new WorkItemSelectorType();
workItemSelector.all(value);
limitations.setCertificationWorkItems(workItemSelector);
}

@Override
public void detach(){
}
}) {
private static final long serialVersionUID = 1L;

@Override
protected void onUpdate(AjaxRequestTarget target) {
}
};
certificationRights.add(new AjaxFormComponentUpdatingBehavior("blur") {
@Override
protected void onUpdate(AjaxRequestTarget target) {}
});
certificationRights.add(new VisibleEnableBehaviour(){
@Override
public boolean isEnabled(){
return getModel().getObject().isEditable();
}
});
certificationRights.setOutputMarkupId(true);
body.add(certificationRights);

AjaxCheckBox managementWorkItems = new AjaxCheckBox(ID_DELEGATE_MANAGEMENT_WI,
new Model<Boolean>(false)) {
private static final long serialVersionUID = 1L;

@Override
protected void onUpdate(AjaxRequestTarget target) {
}
};
managementWorkItems.setOutputMarkupId(true);
managementWorkItems.add(new VisibleEnableBehaviour(){
private static final long serialVersionUID = 1L;

@Override
public boolean isVisible(){
//TODO not implemented yet
return false;
}
});
body.add(managementWorkItems);
};

private void addOrReplacePrivilegesPanel(WebMarkupContainer body){
Expand Down
Expand Up @@ -23,9 +23,12 @@
import com.evolveum.midpoint.web.page.admin.server.dto.ApprovalOutcomeIcon;
import com.evolveum.midpoint.web.page.admin.workflow.dto.DecisionDto;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -53,7 +56,13 @@ protected void initLayout(UserProfileStorage.TableId tableId, int pageSize) {
columns.add(new PropertyColumn<>(createStringResource("DecisionsPanel.originalActor"), DecisionDto.F_ORIGINAL_ACTOR));
columns.add(new PropertyColumn<>(createStringResource("DecisionsPanel.stage"), DecisionDto.F_STAGE));
columns.add(createOutcomeColumn());
columns.add(new PropertyColumn<>(createStringResource("DecisionsPanel.comment"), DecisionDto.F_COMMENT));
columns.add(new PropertyColumn<DecisionDto, String>(createStringResource("DecisionsPanel.comment"), DecisionDto.F_COMMENT){
@Override
public void populateItem(Item<ICellPopulator<DecisionDto>> item, String componentId, IModel<DecisionDto> rowModel) {
super.populateItem(item, componentId, rowModel);
item.add(new AttributeAppender("style", "max-width: 200px; word-wrap: break-word;"));
}
});
columns.add(new PropertyColumn<>(createStringResource("DecisionsPanel.when"), DecisionDto.F_TIME));
columns.add(new PropertyColumn<>(createStringResource("DecisionsPanel.escalation"), DecisionDto.F_ESCALATION_LEVEL_NUMBER));

Expand Down
Expand Up @@ -66,7 +66,7 @@ <h3 class="box-title"><wicket:message key="workItemPanel.mainInfo"/></h3>
</tr>
<tr wicket:id="requesterCommentContainer">
<td><wicket:message key="workItemPanel.requesterComment" /></td>
<td><b><span wicket:id="requesterCommentMessage" /></b></td>
<td style="max-width: 600px; word-wrap: break-word;"><b><span wicket:id="requesterCommentMessage" /></b></td>
</tr>
</table>
</div>
Expand Down

Large diffs are not rendered by default.

Expand Up @@ -79,6 +79,9 @@ DelegationEditorPanel.to=To
DelegationEditorPanel.meLabel=Me
DelegationEditorPanel.limitPrivilegesButton=Limit privileges
DelegationEditorPanel.privileges=Privileges
DelegationEditorPanel.delegateApprovalWorkItems=Delegate completion of approval work items
DelegationEditorPanel.delegateCertificationWorkItems=Delegate review of certification work items
DelegationEditorPanel.delegateManagementWorkItems=Delegate completion of case management work items
AssignmentPreviewDialog.button.cancel=Cancel
AssignmentPreviewDialog.column.description=Description
AssignmentPreviewDialog.column.intent=Intent
Expand Down
Expand Up @@ -1610,4 +1610,15 @@ public void mergeContent(PrismContainerValue<?> other, List<QName> overwrite) th
}
remainingToOverwrite.forEach(name -> removeItem(new ItemPath(name), Item.class));
}

/**
* Set origin type to all values and subvalues
*/
public void setOriginTypeRecursive(final OriginType originType) {
accept((visitable) -> {
if (visitable instanceof PrismValue) {
((PrismValue)visitable).setOriginType(originType);
}
});
}
}
Expand Up @@ -1850,4 +1850,15 @@ private V findValue(Collection<V> values, V value) {
.filter(v -> !differentIds(v, value) && v.equals(value, true))
.findFirst().orElse(null);
}

/**
* Set origin type to all values and subvalues
*/
public void setOriginTypeRecursive(final OriginType originType) {
accept((visitable) -> {
if (visitable instanceof PrismValue) {
((PrismValue)visitable).setOriginType(originType);
}
});
}
}
Expand Up @@ -568,9 +568,7 @@ public static <T> void assertOrigin(Visitable visitableItem, final Objectable ex
}

private static <T> Visitor createOriginVisitor(final Visitable visitableItem, final Objectable expectedOriginObject, final OriginType... expectedOriginTypes) {
return new Visitor() {
@Override
public void visit(Visitable visitable) {
return (visitable) -> {
if (visitable instanceof PrismValue) {
PrismValue pval = (PrismValue)visitable;

Expand All @@ -581,8 +579,7 @@ public void visit(Visitable visitable) {
"; expected "+expectedOriginObject+", was "+pval.getOriginObject();
}
}
}
};
};
}

public static void asserHasDelta(String message, Collection<? extends ObjectDelta<? extends Objectable>> deltas, ChangeType expectedChangeType, Class<?> expectedClass) {
Expand Down

0 comments on commit 8fdce87

Please sign in to comment.