Portálová navigace v aplikaci.
parent
33309a109b
commit
8939b24ff1
@ -0,0 +1,41 @@
|
||||
package info.bukova.isspst.ui;
|
||||
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
|
||||
public class NavigationVM {
|
||||
|
||||
private String contextPath;
|
||||
private String moduleUrl;
|
||||
|
||||
@Init
|
||||
public void init() {
|
||||
contextPath = Executions.getCurrent().getContextPath();
|
||||
moduleUrl = Executions.getCurrent().getDesktop().getRequestPath();
|
||||
}
|
||||
|
||||
public String getContextPath() {
|
||||
return contextPath;
|
||||
}
|
||||
|
||||
public String getModuleUrl() {
|
||||
return moduleUrl;
|
||||
}
|
||||
|
||||
public boolean isOrders() {
|
||||
return moduleUrl.contains("orders");
|
||||
}
|
||||
|
||||
public boolean isSettings() {
|
||||
return moduleUrl.contains("settings");
|
||||
}
|
||||
|
||||
public boolean isAdmin() {
|
||||
return moduleUrl.contains("admin");
|
||||
}
|
||||
|
||||
public boolean isUser() {
|
||||
return moduleUrl.contains("passwd");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package info.bukova.isspst.ui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
|
||||
public class SecurityHelper {
|
||||
|
||||
public static boolean isAllGranted(String authorities) {
|
||||
if (null == authorities || "".equals(authorities)) {
|
||||
return false;
|
||||
}
|
||||
final Collection<String> granted = getPrincipalAuthorities();
|
||||
boolean isAllGranted = granted.containsAll(parseAuthorities(authorities));
|
||||
return isAllGranted;
|
||||
}
|
||||
|
||||
private static Collection<String> parseAuthorities(String authorities) {
|
||||
String[] auth = authorities.split(",");
|
||||
return Arrays.asList(auth);
|
||||
}
|
||||
|
||||
private static Collection<String> getPrincipalAuthorities() {
|
||||
Authentication currentUser = SecurityContextHolder.getContext().getAuthentication();
|
||||
if (null == currentUser) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
if ((null == currentUser.getAuthorities()) || (currentUser.getAuthorities().isEmpty())) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
Collection<String> granted = new ArrayList<String>();
|
||||
for (GrantedAuthority a : currentUser.getAuthorities()) {
|
||||
granted.add(a.getAuthority());
|
||||
}
|
||||
|
||||
return granted;
|
||||
}
|
||||
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package info.bukova.isspst.ui;
|
||||
|
||||
import org.zkoss.bind.annotation.Command;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
|
||||
import info.bukova.isspst.services.UserService;
|
||||
|
||||
public class TestVM {
|
||||
|
||||
@WireVariable
|
||||
private UserService userService;
|
||||
|
||||
@Command
|
||||
public void test() {
|
||||
userService.test();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<taglib>
|
||||
<uri>http://www.zkoss.org/demo/integration/security</uri>
|
||||
<description>
|
||||
Methods and actions for ZK + Spring Security
|
||||
</description>
|
||||
|
||||
<function>
|
||||
<name>isAllGranted</name>
|
||||
<function-class>info.bukova.isspst.ui.SecurityHelper</function-class>
|
||||
<function-signature> boolean isAllGranted(java.lang.String authorities)
|
||||
</function-signature>
|
||||
<description>
|
||||
Return true if the authenticated principal is granted authorities of ALL the specified roles.
|
||||
</description>
|
||||
</function>
|
||||
</taglib>
|
@ -1,10 +0,0 @@
|
||||
<?page title="Okno" contentType="text/html;charset=UTF-8"?>
|
||||
<zk>
|
||||
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
|
||||
<window title="Okno" border="normal" apply="org.zkoss.bind.BindComposer"
|
||||
viewModel="@id('vm') @init('info.bukova.isspst.ui.TestVM')">
|
||||
<label value="Pokus pokus"/>
|
||||
<button label="metoda" onClick="@command('test')"/>
|
||||
</window>
|
||||
<include src="../app/testApp.zul"/>
|
||||
</zk>
|
@ -0,0 +1,10 @@
|
||||
<?page title="Uživatelé" contentType="text/html;charset=UTF-8"?>
|
||||
<zk>
|
||||
|
||||
<zscript>
|
||||
String gridZul = "users.zul";
|
||||
</zscript>
|
||||
|
||||
<include src="../../app/template.zhtml"/>
|
||||
|
||||
</zk>
|
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>Objednávky</title>
|
||||
</head>
|
||||
<body>
|
||||
aplikace
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,10 @@
|
||||
<?page title="Informace" contentType="text/html;charset=UTF-8"?>
|
||||
<zk>
|
||||
|
||||
<zscript>
|
||||
String gridZul = "info.zul";
|
||||
</zscript>
|
||||
|
||||
<include src="template.zhtml"/>
|
||||
|
||||
</zk>
|
@ -0,0 +1,6 @@
|
||||
<?page title="Informace" contentType="text/html;charset=UTF-8"?>
|
||||
<zk>
|
||||
<window title="Informace" border="normal">
|
||||
New Content Here!
|
||||
</window>
|
||||
</zk>
|
@ -0,0 +1,45 @@
|
||||
<?page title="menu" contentType="text/html;charset=UTF-8"?>
|
||||
<zk xmlns:n="native">
|
||||
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
|
||||
<?taglib uri="/WEB-INF/security.tld" prefix="sec"?>
|
||||
|
||||
<tabbox mold="accordion" apply="org.zkoss.bind.BindComposer"
|
||||
viewModel="@id('vm') @init('info.bukova.isspst.ui.NavigationVM')">
|
||||
<tabs>
|
||||
<tab id="orders" label="Objednávky" selected="@load(vm.orders)"/>
|
||||
<tab id="settings" label="Nastavení" selected="@load(vm.settings)"/>
|
||||
<tab id="admin" label="Administrace" selected="@load(vm.admin)"/>
|
||||
<tab id="user" label="Uživatel" selected="@load(vm.user)"/>
|
||||
</tabs>
|
||||
<tabpanels hflex="1">
|
||||
<tabpanel>
|
||||
<menubar orient="vertical">
|
||||
<menuitem label="Moje" href="/orders/my" width="120px"/>
|
||||
<menuitem label="Ke schválení" href="/orders/approve"/>
|
||||
</menubar>
|
||||
</tabpanel>
|
||||
<tabpanel>
|
||||
<menubar orient="vertical">
|
||||
<menuitem label="E-maily" width="120px"/>
|
||||
<menuitem label="Další"/>
|
||||
<menuitem label="Položka"/>
|
||||
</menubar>
|
||||
</tabpanel>
|
||||
<tabpanel>
|
||||
<menubar orient="vertical">
|
||||
<menuitem label="Uživatelé" href="/admin/users" width="120px"/>
|
||||
<menuitem label="Střediska" href="/admin/users" disabled="${not sec:isAllGranted('ROLE_ADMIN')}"/>
|
||||
<menuitem label="Budovy" href="/admin/users"/>
|
||||
<menuitem label="Místnosti" href="/admin/users"/>
|
||||
</menubar>
|
||||
</tabpanel>
|
||||
<tabpanel>
|
||||
<menubar orient="vertical">
|
||||
<menuitem label="Změnit heslo" width="120px"/>
|
||||
<menuitem label="Odhlásit" href="/j_spring_security_logout"/>
|
||||
</menubar>
|
||||
</tabpanel>
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
|
||||
</zk>
|
@ -0,0 +1,50 @@
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
#header{
|
||||
width: auto;
|
||||
height:70px;
|
||||
border: 1px solid #ccc;
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
#leftcolumn{
|
||||
width:140px;
|
||||
/* margin: 20px 20px 20px 0px;*/
|
||||
padding:10px;
|
||||
float: left;
|
||||
/* border: 1px solid #ccc;*/
|
||||
}
|
||||
|
||||
#navbar{
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
#maincolumn{
|
||||
padding:10px;
|
||||
margin: 0px 0px 0px 160px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
#footer{
|
||||
clear:both;
|
||||
width:auto;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
/*
|
||||
a:link,a:visited {
|
||||
font-size: 12px;
|
||||
color: #0000A0;
|
||||
background-color: #FFFFFF;
|
||||
text-decoration: none;
|
||||
target-new: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
font-size: 12px;
|
||||
color: #0000A0;
|
||||
background-color: #a3d3f8;
|
||||
text-decoration: none;
|
||||
target-new: none;
|
||||
}*/
|
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<html xmlns="native" xmlns:u="zul" xmlns:zk="zk">
|
||||
<u:style src="/app/page.css"/>
|
||||
|
||||
<div id="header">
|
||||
hlavicka
|
||||
</div>
|
||||
|
||||
<div id="leftcolumn">
|
||||
<u:include src="/app/navigation.zul"/>
|
||||
</div>
|
||||
|
||||
<div id="maincolumn">
|
||||
<u:include src="${gridZul}"/>
|
||||
</div>
|
||||
|
||||
<div id="footer">Footer
|
||||
|
||||
</div>
|
||||
|
||||
</html>
|
@ -1,6 +0,0 @@
|
||||
<?page title="Test" contentType="text/html;charset=UTF-8"?>
|
||||
<zk>
|
||||
<window title="Test" border="normal">
|
||||
New Content Here!
|
||||
</window>
|
||||
</zk>
|
@ -0,0 +1,8 @@
|
||||
<?page title="index" contentType="text/html;charset=UTF-8"?>
|
||||
<zk>
|
||||
|
||||
<zscript>
|
||||
Executions.getCurrent().sendRedirect("app");
|
||||
</zscript>
|
||||
|
||||
</zk>
|
Loading…
Reference in New Issue