Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Nov 29, 2017
2 parents 68704d1 + 719fa3d commit b3b7790
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 28 deletions.
@@ -1,5 +1,5 @@
<!--
~ Copyright (c) 2010-2015 Evolveum
~ Copyright (c) 2010-2017 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
Expand All @@ -21,7 +21,7 @@
<wicket:container wicket:id="menuItems">
<li class="header">
<span wicket:id="name"></span>
<i class="fa fa-angle-left pull-right" wicket:id="minimizedIcon"></i>
<i class="pull-right" wicket:id="minimizedIcon"></i>
</li>
<wicket:container wicket:id="items">
<wicket:container wicket:id="item"/>
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2010-2015 Evolveum
* Copyright (c) 2010-2017 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -15,16 +15,21 @@
*/
package com.evolveum.midpoint.web.component.menu;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.web.component.prism.show.SceneDto;
import com.evolveum.midpoint.web.component.util.SimplePanel;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.security.SecurityUtils;
import com.evolveum.midpoint.web.session.SessionStorage;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
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 org.apache.wicket.model.PropertyModel;

Expand All @@ -35,8 +40,9 @@
* @author Viliam Repan (lazyman)
*/
public class SideBarMenuPanel extends SimplePanel<List<SideBarMenuItem>> {

private static final String ID_SIDEBAR = "sidebar";
private static final long serialVersionUID = 1L;

private static final String ID_SIDEBAR = "sidebar";
private static final String ID_MENU_ITEMS = "menuItems";
private static final String ID_NAME = "name";
private static final String ID_ITEMS = "items";
Expand All @@ -56,44 +62,52 @@ protected void initLayout() {
add(sidebar);

ListView<SideBarMenuItem> menuItems = new ListView<SideBarMenuItem>(ID_MENU_ITEMS, getModel()) {
private static final long serialVersionUID = 1L;

@Override
@Override
protected void populateItem(final ListItem<SideBarMenuItem> item) {
Label name = new Label(ID_NAME, item.getModelObject().getName());
name.add(new AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;

@Override
@Override
protected void onEvent(AjaxRequestTarget target) {
SideBarMenuItem mainMenu = item.getModelObject();

SessionStorage storage = getPageBase().getSessionStorage();
Map<String, Boolean> menuState = storage.getMainMenuState();

String menuLabel = mainMenu.getName().getObject();
// we'll use menu label as key
Boolean expanded = menuState.get(menuLabel);

if (expanded == null) {
expanded = true;
}

menuState.put(menuLabel, !expanded);

target.add(sidebar);
onMenuClick(sidebar, item, target);
}
});
item.add(name);

WebMarkupContainer icon = new WebMarkupContainer(ID_MINIMIZED_ICON);
icon.add(new VisibleEnableBehaviour() {
icon.add(new AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;

@Override
protected void onEvent(AjaxRequestTarget target) {
onMenuClick(sidebar, item, target);
}
});
icon.add(AttributeModifier.append("class", new AbstractReadOnlyModel<String>() {
private static final long serialVersionUID = 1L;

@Override
public boolean isVisible() {
SideBarMenuItem mainMenu = item.getModelObject();
public String getObject() {
SideBarMenuItem mainMenu = item.getModelObject();
if (isMenuExpanded(mainMenu)) {
return GuiStyleConstants.CLASS_ICON_COLLAPSE;
}

return !isMenuExpanded(mainMenu);
return GuiStyleConstants.CLASS_ICON_EXPAND;
}
});
}));
// icon.add(new VisibleEnableBehaviour() {
//
// @Override
// public boolean isVisible() {
// SideBarMenuItem mainMenu = item.getModelObject();
//
// return !isMenuExpanded(mainMenu);
// }
// });
item.add(icon);

ListView<MainMenuItem> items = new ListView<MainMenuItem>(ID_ITEMS,
Expand Down Expand Up @@ -162,6 +176,25 @@ public boolean isVisible() {
};
sidebar.add(menuItems);
}

private void onMenuClick(final WebMarkupContainer sidebar, final ListItem<SideBarMenuItem> item, AjaxRequestTarget target) {
SideBarMenuItem mainMenu = item.getModelObject();

SessionStorage storage = getPageBase().getSessionStorage();
Map<String, Boolean> menuState = storage.getMainMenuState();

String menuLabel = mainMenu.getName().getObject();
// we'll use menu label as key
Boolean expanded = menuState.get(menuLabel);

if (expanded == null) {
expanded = true;
}

menuState.put(menuLabel, !expanded);

target.add(sidebar);
}

private boolean isMenuExpanded(SideBarMenuItem mainMenu) {
SessionStorage storage = getPageBase().getSessionStorage();
Expand Down
Expand Up @@ -122,6 +122,11 @@ th.cog, td.cog {
width: 20px;
}

.sidebar-menu > .header {
// white-space: wrap is problematic in firefox, it wraps expand/collapse icon on next line
white-space: normal !important;
}

.sidebar-form, .sidebar-menu > li.header {
padding: 10px 20px 10px 15px;
text-transform: uppercase;
Expand Down
27 changes: 27 additions & 0 deletions samples/evolveum/roles.xml
Expand Up @@ -621,5 +621,32 @@
</authorization>
<roleType>operational</roleType>
</role>

<role oid="8d93aef4-d4f0-11e7-85ee-5728c3e3ca7d">
<name>Limited midPoint administrator</name>
<authorization>
<name>ladmin-ui-all</name>
<action>http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#all</action>
</authorization>
<authorization>
<name>ladmin-read-users</name>
<action>http://midpoint.evolveum.com/xml/ns/public/security/authorization-model-3#read</action>
<object>
<type>UserType</type>
</object>
</authorization>
<authorization>
<name>ladmin-read-roles</name>
<action>http://midpoint.evolveum.com/xml/ns/public/security/authorization-model-3#read</action>
<object>
<type>RoleType</type>
</object>
</authorization>
<authorization>
<name>ladmin-raw</name>
<action>http://midpoint.evolveum.com/xml/ns/public/security/authorization-model-3#rawOperation</action>
</authorization>
<roleType>operational</roleType>
</role>

</objects>

0 comments on commit b3b7790

Please sign in to comment.